1 回答
TA贡献1784条经验 获得超2个赞
更新 1
1) 这个钩子不是用来显示任何东西或重定向用户的,它是用来保存(或改变)订单行项目元数据......
所以你最好在你的情况下使用钩子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 ) {
$user_id = (int) $order->get_user_id();
if ( $user_id > 0 ){
$qr_code = generate_qr_number($user_id);
$order->update_meta_data( 'qr_code', $qr_code );
}
}
要检查二维码是否已保存,您可以使用以下命令在管理订单编辑页面中显示它:
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 ){
if( $qr_code = $order->get_meta('qr_code') ){
echo '<div class="qr-code">
<table cellpadding="0" cellspacing="0" border="0" style="margin-top:6px;">
<tr><th align="left">'.__('QR Code').': </th><td> ' . $qr_code . '</td></tr>
</table></div>';
}
}
代码位于您的活动子主题(或活动主题)的 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 ) {
$user_id = (int) $order->get_user_id();
if ( $user_id > 0 ){
$qr_code = generate_qr_number($user_id);
$item->update_meta_data( 'Qr code', $qr_code );
}
}
- 1 回答
- 0 关注
- 234 浏览
添加回答
举报