如何 link WooCommerce 来宾在注册后向客户帐户下订单
How to link WooCommerce guest orders to customer account after registration
我们的场景是:
来宾用户无需注册即可进入站点并下一个或多个订单。过了一会儿,他决定在网站上注册。
现在注册后如何link客人下单到客户账户?
我使用的是下面的代码,但是这个代码只对已经注册但是购买时没有登录的用户有效。有什么建议吗?
//assign user in guest order
add_action( 'woocommerce_new_order', 'action_woocommerce_new_order', 10, 1 );
function action_woocommerce_new_order( $order_id ) {
$order = new WC_Order($order_id);
$user = $order->get_user();
if( !$user ){
//guest order
$userdata = get_user_by( 'email', $order->get_billing_email() );
if(isset( $userdata->ID )){
//registered
update_post_meta($order_id, '_customer_user', $userdata->ID );
}else{
//Guest
}
}
}
您可以使用 woocommerce_created_customer
动作挂钩和 wc_update_new_customer_past_orders() 函数
所以你得到:
function action_woocommerce_created_customer( $customer_id, $new_customer_data, $password_generated ) {
// Link past orders to this newly created customer
wc_update_new_customer_past_orders( $customer_id );
}
add_action( 'woocommerce_created_customer', 'action_woocommerce_created_customer', 10, 3 );
我们的场景是:
来宾用户无需注册即可进入站点并下一个或多个订单。过了一会儿,他决定在网站上注册。
现在注册后如何link客人下单到客户账户?
我使用的是下面的代码,但是这个代码只对已经注册但是购买时没有登录的用户有效。有什么建议吗?
//assign user in guest order
add_action( 'woocommerce_new_order', 'action_woocommerce_new_order', 10, 1 );
function action_woocommerce_new_order( $order_id ) {
$order = new WC_Order($order_id);
$user = $order->get_user();
if( !$user ){
//guest order
$userdata = get_user_by( 'email', $order->get_billing_email() );
if(isset( $userdata->ID )){
//registered
update_post_meta($order_id, '_customer_user', $userdata->ID );
}else{
//Guest
}
}
}
您可以使用 woocommerce_created_customer
动作挂钩和 wc_update_new_customer_past_orders() 函数
所以你得到:
function action_woocommerce_created_customer( $customer_id, $new_customer_data, $password_generated ) {
// Link past orders to this newly created customer
wc_update_new_customer_past_orders( $customer_id );
}
add_action( 'woocommerce_created_customer', 'action_woocommerce_created_customer', 10, 3 );