WooCommerce: Cómo avisar al administrador cuando se crea una cuenta de cliente

Son multitud de situaciones en las que puede ser interesante que, como administrador o gestor de una tienda online, quieras saber cuándo se crea una nueva cuenta de usuario, en este caso de cliente.

Si tienes una tienda online con WooCommerce es fácil añadir esta funcionalidad, que no viene por defecto.

Aviso al administrador cuando se crea una nueva cuenta de cliente mediante código

Un modo de conseguir esta característica es añadir este código a tu plugin de modificaciones o personalizaciones:

/* Avisa al admin cuando se crea una cuenta nueva de cliente */
add_action( 'woocommerce_created_customer', 'woocommerce_created_customer_admin_notification' );
function woocommerce_created_customer_admin_notification( $customer_id ) {
  wp_send_new_user_notifications( $customer_id, 'admin' );
}

La acción que lanza la función creada crea y envía el aviso al administrador.

Aviso al administrador cuando se crea una nueva cuenta de cliente gracias al SMTP

Algo que descubrí por casualidad es que si configuras en WooCommerce > Ajustes > Correos electrónicos tu cuenta de correo electrónico con una dirección real y usas un SMTP para enviar los correos en vez de PHP Mail() tiene premio.

Pues resulta que, como usas tu cuenta de correo SMTP para los envíos, todos los correos que se envíen a los clientes al crear su cuenta estarán en tu cuenta de correos enviados. ¿A que no habías caído?

Si no es suficiente para ti puedes crear una regla en tu cliente de correo para que esos correos se guarden en la bandeja de entrada, en una carpeta o etiqueta específica o lo que más te guste.

Por supuesto, este método es más óptimo en todos los sentidos que cualquier otra solución.

No solo liberas a tu servidor del envío de correos mediante PHP Mail() sino que además no necesitas código adicional alguno para recibir avisos.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en los emoticonos para valorarlo!

Promedio de puntuación 5 / 5. Total de votos: 3

Hasta ahora ¡no hay votos!. Sé el primero en valorar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en los medios sociales!

¡Siento que este contenido no te haya sido útil!

¡Ayúdame a mejorar este contenido!

Por favor, dime, ¿cómo puedo mejorarlo?

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

Sobre el autor

4 comentarios en “WooCommerce: Cómo avisar al administrador cuando se crea una cuenta de cliente”

  1. Saludos estoy usando wp_new_user_notification_email, pero quiero que invoque la plantilla WC_Email_Customer_New_Account de woocomerce, como puedo hacer esto gracias.

      1. Hola José.

        Para empezar mira el maravilloso post/consejo de Mosén Fernando de cómo hacer un plugin propio de «funciones»

        Una vez que lo tengas, introduce este código, OJO cambiando ciertas partes que te insistiré en el final.

        /* *********************************************** Change of Address Email ***************************************** */
        // Send notification email when customer changes address.
          add_action( 'woocommerce_customer_save_address','notify_admin_customer_address_change', 10, 2);
          function notify_admin_customer_address_change( $user_id, $load_address ) {
            // Set the $from_name, $from_email, and $to for your site.
            $from_name = 'El nombre identificativo de la tienda';
            $from_email = 'el correo desde donde se envía (yo uso WP Mail SMTP Pro)';
            $to = 'el correo donde quieres que notifique la modificación';
            
            $current_user = wp_get_current_user();
              if (!($current_user instanceof WP_User)) {
               return;
             }
              
              // format email
              $message .= 'User ' . $current_user->user_login . ' has changed their ' . $load_address .  " address.\n";
              $user_email = $current_user->user_email;
            $message .= 'User Email: ' . $user_email . "\n";
            $message .= 'User First Name: ' . $current_user->user_firstname . "\n";
            $message .= 'User Last Name: ' . $current_user->user_lastname . "\n";
            $message .= "\n";
            $message .= "\n";
            
            // Get the old address, which as of Woocommerce 3.8, is still in wc()->customer.
            $message .= "Old " . ucfirst($load_address) . " Address:\n";
            
            switch($load_address) {
              case 'billing':
                $message .= wc()->customer->get_billing_first_name() . ' ' . wc()->customer->get_billing_last_name() . "\n";
                $message .= wc()->customer->get_address() . "\n";
                $address_2 = wc()->customer->get_address_2();
                if ($address_2 != '') {
                  $message.= $address_2 . "\n";
                }
                $message .= wc()->customer->get_city() . " ";
                $message .= wc()->customer->get_state() . " ";
                $message .= wc()->customer->get_postcode() . "\n";
                $message .= wc()->customer->get_country() . "\n\n";
              break;
              case 'shipping':
                $message .= wc()->customer->get_shipping_first_name() . ' ' . wc()->customer->get_shipping_last_name() . "\n";
                $message .= wc()->customer->get_shipping_address() . "\n";
                $shipping_address_2 = wc()->customer->get_shipping_address_2();
                if ($shipping_address_2 != '') {
                  $message .= $shipping_address_2 . "\n";
                }
                $message .= wc()->customer->get_shipping_city() . " ";
                $message .= wc()->customer->get_shipping_state() . " ";
                $message .= wc()->customer->get_shipping_postcode() . "\n";
                $message .= wc()->customer->get_shipping_country();
              break;
            }
            
            // Get the updated address, which is in the user meta table.
            $message .= "\n\nNew " . ucfirst($load_address) . " Address:\n";
            
            switch($load_address) {
              case 'billing':
                $message .= get_user_meta($user_id, 'billing_first_name', true) . ' ' . get_user_meta($user_id, 'billing_last_name', true) . "\n";
                $message .= get_user_meta($user_id, 'billing_address_1', true) . "\n";
                $address_2 = get_user_meta($user_id, 'billing_address_2', true);
                if ($address_2 != '') {
                  $message.= $address_2 . "\n";
                }
                $message .= get_user_meta($user_id, 'billing_city', true) . " ";
                $message .= get_user_meta($user_id, 'billing_state', true) . " ";
                $message .= get_user_meta($user_id, 'billing_postcode', true) . "\n";
                $message .= get_user_meta($user_id, 'billing_country', true) . "\n\n";
              break;
              case 'shipping':
                $message .= get_user_meta($user_id, 'shipping_first_name', true) . ' ' . get_user_meta($user_id, 'shipping_last_name', true) . "\n";
                $message .= get_user_meta($user_id, 'shipping_address_1', true) . "\n";
                $address_2 = get_user_meta($user_id, 'shipping_address_2', true);
                if ($address_2 != '') {
                  $message.= $address_2 . "\n";
                }
                $message .= get_user_meta($user_id, 'shipping_city', true) . " ";
                $message .= get_user_meta($user_id, 'shipping_state', true) . " ";
                $message .= get_user_meta($user_id, 'shipping_postcode', true) . "\n";
                $message .= get_user_meta($user_id, 'shipping_country', true) . "\n\n";
              break;
            }
            
            // Set the email up to reply to the user's email.
            $headers = 'From: ' . $from_name . ' ' . "\n" . 'Reply-To: ' . $user_email . "\n";
            
              wp_mail($to, 'Aviso de cambio de dirección de cliente', $message, $headers);
          }
        /* **************************************** End of Change of Address Email ***************************************** */

        No olvides esto:
        $from_name = ‘El nombre identificativo de la tienda’;
        $from_email = ‘el correo desde donde se envía (yo uso WP Mail SMTP Pro’;
        $to = ‘el correo donde quieres que notifique la modificación’;

        wp_mail($to, 'Aviso de cambio de dirección de cliente --- Aquí escribe el título del email', $message, $headers);

        Puedes traducir lo que quieras, pero yo no lo he hecho.
        He de decirte que no es teoría… a mi me funciona y manda las notificaciones a mi cliente.
        También es verdad que a veces me ha mandado varios del mismo, pero es un mal menor.

        Espero que te sirva a ti y a quien lo encuentre útil.

        Fernando, esta línea es eliminable si no procede, es una tienda de café… ineffable… una delicia

        Saludos J Bosch

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Información base sobre privacidad:
  • Responsable: Fernando Tellado ([email protected])
  • Fin del tratamiento: Moderación de comentarios para evitar spam
  • Legitimación: Tu consentimiento
  • Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
  • Derechos: Acceso, rectificación, portabilidad, olvido

 

Ir arriba
Ir al contenido