WooCommerce: registro automático de pagos de invitados

Primero, un descargo de responsabilidad: asegúrese de que esto sea legal en su país y también de que los visitantes de su proceso de pago sepan que se convertirán en clientes registrados sin consentimiento explícito (es decir, sin marcar la casilla de verificación "crear una cuenta en este sitio").

Entonces, sí, hay una manera de convertir las compras de invitados en compras de clientes registrados. Además, hay una función ordenada de WooCommerce para agregar de forma masiva todos los pedidos de invitados anteriores a un nuevo cliente ( wc_update_new_customer_past_orders ).

Por supuesto, " Permitir que los clientes realicen pedidos sin una cuenta " debe estar habilitado en la configuración de WooCommerce; de ​​lo contrario, no permitirá los pagos de invitados y el fragmento será irrelevante.

Entonces, aquí está la solución. ¡Disfrutar!

Esta captura de pantalla requiere un poco de contexto. Con el fragmento a continuación, registra automáticamente a los usuarios invitados y también sincroniza sus pedidos de invitados anteriores. Esto significa que, si lo desea, puede deshabilitar totalmente la configuración de WooCommerce "Permitir que los clientes creen una cuenta durante el proceso de pago" porque pase lo que pase, el usuario se registrará automáticamente. ¡Espero que tenga sentido!

Fragmento de PHP: Registre automáticamente a los clientes invitados en el proceso de pago de WooCommerce (e inicie sesión mediante programación en la página de agradecimiento de WooCommerce)

/**
 * @snippet       Register Guest Users @ WooCommerce Checkout
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @testedwith    WooCommerce 6
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
 
add_action( 'woocommerce_thankyou', 'bbloomer_register_guests', 9999 );
 
function bbloomer_register_guests( $order_id ) {
   $order = wc_get_order( $order_id );
   $email = $order->get_billing_email();
   if ( ! email_exists( $email ) && ! username_exists( $email ) ) {
      $customer_id = wc_create_new_customer( $email, '', '', array(
         'first_name' => $order->get_billing_first_name(),
         'last_name'  => $order->get_billing_last_name(),
      ));
      if ( is_wp_error( $customer_id ) ) {
         throw new Exception( $customer_id->get_error_message() );
      }
      wc_update_new_customer_past_orders( $customer_id );
      wc_set_customer_auth_cookie( $customer_id );
   } else {
      $user = get_user_by( 'email', $email );
      wc_update_new_customer_past_orders( $user->ID );
      wc_set_customer_auth_cookie( $user->ID );
   }
}

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir