matinal
Nuestro escenario es:
El usuario invitado ingresa al sitio y realiza uno o más pedidos sin necesidad de registrarse. Y después de un tiempo, decide registrarse en el sitio.
Ahora, ¿cómo vincular los pedidos de invitados a la cuenta del cliente después del registro?
Utilizo el siguiente código, pero este código solo funciona para usuarios que ya se han registrado pero no iniciaron sesión en el momento de la compra. ¿Algún consejo?
//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
}
}
}
Puedes usar el woocommerce_created_customer
gancho de acción y el wc_update_new_customer_past_orders() función
Entonces obtienes:
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 );
¿Ha sido útil esta solución?
Tu feedback nos ayuda a saber si la solución es correcta y está funcionando. De esta manera podemos revisar y corregir el contenido.