如何在 woocommerce_checkout_create_

下面是我的功能。但是我似乎在任何页面上都看不到我的回声。


function add_qr_number_to_order_item( $item, $cart_item_key, $values, $order ) {


    if ( is_user_logged_in() ) {


        $user = wp_get_current_user();

        $user_id = $user->ID;

        $qr_code = generate_qr_number($user_id);

        $item->add_meta_data( 'qr_code', $qr_code );


        echo "QR: " . $qr_code; 


    } else {

        wp_redirect( wp_login_url() );

    }

}

add_action( 'woocommerce_checkout_create_order_line_item', 'add_qr_number_to_order_item', 10, 4 );



慕侠2389804
浏览 235回答 1
1回答

一只斗牛犬

更新 11) 这个钩子不是用来显示任何东西或重定向用户的,它是用来保存(或改变)订单行项目元数据......所以你最好在你的情况下使用钩子woocommerce_checkout_create_order来添加基于用户 ID 的二维码,作为订单元数据...2)为了获得用户ID的使用$order->get_user_id() (如果用户ID是0用户不能登录和其他被登录)。假设您的自定义函数generate_qr_number()有效,正确的代码应该是:add_action('woocommerce_checkout_create_order_line_item', 'save_order_item_qr_code', 10, 2 );function save_order_item_qr_code( $item, $cart_item_key, $values, $order ) {&nbsp; &nbsp; $user_id = (int) $order->get_user_id();&nbsp; &nbsp; if ( $user_id > 0 ){&nbsp; &nbsp; &nbsp; &nbsp; $qr_code = generate_qr_number($user_id);&nbsp; &nbsp; &nbsp; &nbsp; $order->update_meta_data( 'qr_code', $qr_code );&nbsp; &nbsp; }}要检查二维码是否已保存,您可以使用以下命令在管理订单编辑页面中显示它:add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_qr_code_to_order_admin', 10, 1 );function display_qr_code_to_order_admin( $order ){&nbsp; &nbsp; if( $qr_code = $order->get_meta('qr_code') ){&nbsp; &nbsp; &nbsp; &nbsp; echo '<div class="qr-code">&nbsp; &nbsp; &nbsp; &nbsp; <table cellpadding="0" cellspacing="0" border="0" style="margin-top:6px;">&nbsp; &nbsp; &nbsp; &nbsp; <tr><th align="left">'.__('QR Code').':&nbsp;</th><td>&nbsp;' . $qr_code . '</td></tr>&nbsp; &nbsp; &nbsp; &nbsp; </table></div>';&nbsp; &nbsp; }}代码位于您的活动子主题(或活动主题)的 functions.php 文件中。它应该工作。更新 2要为您应该使用的每个订单项目保存它(假设该generate_qr_number()功能有效):add_action('woocommerce_checkout_create_order_line_item', 'save_order_item_qr_code', 10, 4 );function save_order_item_qr_code( $item, $cart_item_key, $values, $order ) {&nbsp; &nbsp; $user_id = (int) $order->get_user_id();&nbsp; &nbsp; if ( $user_id > 0 ){&nbsp; &nbsp; &nbsp; &nbsp; $qr_code = generate_qr_number($user_id);&nbsp; &nbsp; &nbsp; &nbsp; $item->update_meta_data( 'Qr code', $qr_code );&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP