• Resuelto Dosges

    (@doges)


    Buenos días,

    Estoy montando una tienda online con Breakdance y WooCommerce en la que no consigo que genere el correo tras crearse un nuevo usuario. Breakdance recurre a los mensajes por defecto de WordPress, no los de WooCommerce.

    Tengo instalado el plugin WP Mail STMP y, estoy bastante seguro, configurado correctamente con una cuenta de Gmail. Envía todos los demás correos, como por ejemplo los de prueba o los de cambio de contraseña.

    Con el plugin WP Mail Logging tengo comprobado que ni siquiera se genera el correo, así que no es un problema de spam.

    Muchas gracias. Saludos,

    Pablo

Viendo 6 respuestas - de la 1 a la 6 (de un total de 6)
  • Hola Pablo.

    Parece que el formulario de registro de Breakdance está utilizando la función nativa de WordPress para crear usuarios (wp_create_user o similar), pero no está disparando los hooks específicos de WooCommerce que se encargan de enviar el correo de bienvenida al cliente. ¿Es así?

    Asegúrate de haber revisado a fondo la configuración del elemento de formulario de registro de Breakdance. A veces, los constructores incluyen una opción para integrarse específicamente con WooCommerce.

    Busca alguna casilla o ajuste que diga algo como «Registro de WooCommerce», «Crear como cliente» o similar. Si existe, activarla podría ser suficiente para que Breakdance dispare los hooks correctos.

    En lugar de usar el widget de formulario de Breakdance para el registro, puedes simplemente dirigir a tus usuarios a la página «Mi Cuenta» (tusitio.com/mi-cuenta).

    Esta página, generada por el shortcode [woocommerce_my_account], contiene el formulario de registro y acceso de WooCommerce, que garantiza que se envíen todos los correos electrónicos correctamente. Puedes crear un enlace o un botón en tu diseño de Breakdance que apunte a esa URL.

    También puedes forzar el envío del correo de WooCommerce con un fragmento de código para «escuchar» cuando se registre un nuevo usuario (sin importar cómo) y decirle a WooCommerce que envíe su correo de bienvenida.

    Revisa las opciones anteriores y, si no encuentras solución, puedo preparate el fragmento de código.

    Saludos.

    Iniciador del debate Dosges

    (@doges)

    Buenos días Jose Ramón,

    Muchas gracias por tu ayuda, es todo tal cual has intuido.

    He revisado de nuevo el elemento de formulario de registro de Breakdance y configuraciones de Breakdance, pero no presenta ninguna casilla o ajuste del tipo «Registro de WooCommerce», «Crear como cliente» o similar.

    Efectivamente, si dirijo al usuario a la página «Mi cuenta», el formulario solicita una dirección de e-mail, y al cumplimentarlo, envía correctamente el correo. Pero el formulario no solicita una contraseña, lo hace al acceder desde el enlace del correo y, aparte de nombre, apellidos y demás, solicita rellenar 3 campos al respecto de la contraseña: «Contraseña actual», «Nueva contraseña» y «Confirmar nueva contraseña». Al no haberse establecido una primera «Contraseña actual», genera un conflicto y no permite avanzar. Creo que además sería confuso de comprender para el usuario.

    No conozco la opción de código que mencionas, parece interesante. Sería de gran ayuda poderlo implementar.

    Gracias de nuevo Jose Ramón. Saludos,

    Pablo

    Hola Pablo.

    Te paso el código para que pruebes.

    Recuerda hacer siempre una copia de seguridad del sitio antes de implememtar este tipo de cambios.

    Vamos a «escuchar» cuando se registre un nuevo usuario (sin importar cómo) y le diremos a WooCommerce que envíe su correo de bienvenida.

    Este código puedes añadirlo en el archivo functions.php de tu tema hijo (nunca en el del tema padre) o, de forma más recomendable y segura, usando un plugin de fragmentos de código como Code Snippets.

    /**
    * Dispara el correo de bienvenida de WooCommerce cuando se registra un nuevo usuario,
    * independientemente del método de registro (ej. un formulario de Breakdance).
    */
    add_action( 'user_register', 'enviar_correo_bienvenida_wc_en_registro', 10, 1 );

    function enviar_correo_bienvenida_wc_en_registro( $user_id ) {
    // Primero, nos aseguramos de que WooCommerce esté activo para no causar un error fatal.
    if ( ! class_exists( 'WooCommerce' ) ) {
    return;
    }

    // Obtenemos la instancia del sistema de correos de WooCommerce.
    $mailer = WC()->mailer();
    $emails = $mailer->get_emails();

    // Comprobamos que la clase del correo electrónico 'Customer_New_Account' existe y está activa.
    if ( isset( $emails['WC_Email_Customer_New_Account'] ) ) {
    // Disparamos el correo, pasándole el ID del usuario recién creado.
    $emails['WC_Email_Customer_New_Account']->trigger( $user_id );
    }
    }

    ¿Qué hace este código?

    1. Se engancha a la acción user_register, que WordPress ejecuta cada vez que se crea un nuevo usuario con éxito.
    2. Dentro de nuestra función, comprueba si WooCommerce está activo.
    3. Obtiene el objeto del correo específico de «Nueva Cuenta» de WooCommerce.
    4. Llama al método trigger() de ese objeto, pasándole el ID del nuevo usuario. Esto es exactamente lo que hace WooCommerce por su cuenta, pero nosotros lo estamos forzando manualmente.

    Prueba esta solución y me cuentas.

    Saludos.

    Iniciador del debate Dosges

    (@doges)

    Hola Jose Ramón,

    ¡Muchas gracias, funciona perfectamente!

    Por otro lado, sigo intentando averiguar porqué, al probar el supuesto de recuperar la contraseña olvidada, no llega un correo con la plantilla que he preparado con el plugin YayCommerce y que funciona bien con todos los demás (incluido el de nuevo usuario). Además, el enlace dirige a un formulario con el aspecto básico de WordPress, no a una página pre-diseñada.

    Gracias de nuevo Jose Ramón. Saludos,

    Pablo

    ¡Hola @doges!

    Respecto a la recuperación de contraseña y el uso de plantillas diseñadas con el plugin YayCommerce: Sobre el email de recuperación de contraseña

    • WooCommerce, por defecto, no maneja el proceso de recuperación de contraseña, ya que esto recae en el sistema nativo de WordPress. Por eso, el correo que se envía para recuperar una contraseña es el estándar de WordPress y no pasa por las plantillas ni los ajustes de correos de WooCommerce o del propio YayCommerce.
    • El formulario al que lleva el enlace también es el básico de WordPress, precisamente porque es este sistema el que gestiona tanto el formulario como el correo.

    Actualmente, WooCommerce y la mayoría de plugins de personalización de emails (como YayCommerce) no reemplazan las notificaciones de recuperación de contraseña, ya que estas siguen gestionadas por WordPress. Dicho esto seria bueno poder contactar al soporte de YayCommerce para verificar que todo este bien en su lado: https://docs.yaycommerce.com/yaymail/other-links/troubleshooting

    Iniciador del debate Dosges

    (@doges)

    Buenos días Chris,

    Muchas gracias por tu ayuda. Efectivamente, es tal cual explicas.

    He logrado resolverlo añadiendo códigos PHP y CSS que me han permitido dar forma tanto al e-mail de recuperación de contraseña como a la página con el formulario.

    Gracias de nuevo Chris. Saludos,

    Pablo

Viendo 6 respuestas - de la 1 a la 6 (de un total de 6)

Debes estar registrado para responder a este debate.