¿Cómo cambiar el correo electrónico predeterminado de registro? (con o sin plugin)

21 abr 2011, 13:24:09
Vistas: 155K
Votos: 64

Después del registro de un nuevo usuario, WordPress envía un correo electrónico con el usuario/contraseña y un enlace a la página de inicio de sesión.

¿Existe alguna manera de cambiar esta plantilla de correo electrónico predeterminada? También me gustaría cambiar el asunto y el remitente.

Edición: Para aquellos interesados, aquí hay una solución mediante plugin.

0
Todas las respuestas a la pregunta 3
8
69

El correo electrónico para nuevos usuarios se envía utilizando la función wp_new_user_notification(). Esta función es "pluggable", lo que significa que puedes sobrescribirla:

// Redefinir la función de notificación de usuario
if ( !function_exists('wp_new_user_notification') ) {
    function wp_new_user_notification( $user_id, $plaintext_pass = '' ) {
        $user = new WP_User($user_id);

        $user_login = stripslashes($user->user_login);
        $user_email = stripslashes($user->user_email);

        $message  = sprintf(__('Nuevo registro de usuario en tu blog %s:'), get_option('blogname')) . "\r\n\r\n";
        $message .= sprintf(__('Usuario: %s'), $user_login) . "\r\n\r\n";
        $message .= sprintf(__('Correo electrónico: %s'), $user_email) . "\r\n";

        @wp_mail(get_option('admin_email'), sprintf(__('[%s] Nuevo Registro de Usuario'), get_option('blogname')), $message);

        if ( empty($plaintext_pass) )
            return;

        $message  = __('Hola,') . "\r\n\r\n";
        $message .= sprintf(__("¡Bienvenido a %s! Aquí está cómo ingresar:"), get_option('blogname')) . "\r\n\r\n";
        $message .= wp_login_url() . "\r\n";
        $message .= sprintf(__('Usuario: %s'), $user_login) . "\r\n";
        $message .= sprintf(__('Contraseña: %s'), $plaintext_pass) . "\r\n\r\n";
        $message .= sprintf(__('Si tienes algún problema, por favor contáctame a %s.'), get_option('admin_email')) . "\r\n\r\n";
        $message .= __('¡Adiós!');

        wp_mail($user_email, sprintf(__('[%s] Tu usuario y contraseña'), get_option('blogname')), $message);

    }
}

Nota: Sobrescribir funciones "pluggable" no se puede hacer en el archivo functions.php del tema. El archivo pluggable de WP ya está cargado en ese punto, por lo que la función ya estaría definida por WP (es decir, la predeterminada). Tu versión personalizada debe cargarse antes de que esto suceda, lo que significa que debes cargarla en un archivo de plugin personalizado.

21 abr 2011 16:15:39
Comentarios

@Bainternet No puedo hacer que esto funcione, he añadido esto a mi archivo de funciones, pero el correo estándar sigue enviándose. Estoy en multisitio, pero eso no debería importar, ¿verdad?

User User
2 jul 2011 05:33:33

OK ahora lo tengo, parece que solo funciona como un plugin separado, no cuando lo añades a tu archivo functions.php. Ahora funciona perfectamente, ¡gracias nuevamente por ese buen fragmento de código!

User User
2 jul 2011 06:03:20

¿Funciona también para multisitio? Puedo ver que multisitio tiene un montón de funciones dentro de ms-functions.php para enviar correos de notificación.

Sisir Sisir
28 jul 2013 10:42:31

Multisite utiliza wpmu_signup_user_notification creo.

Wyck Wyck
25 nov 2014 23:43:53

Esta respuesta tiene varios años. La respuesta aceptada no funciona para mí. (Agregarlo a functions.php no hace ninguna diferencia en los correos electrónicos enviados cuando un nuevo usuario se registra). ¿Debería publicar una nueva pregunta?

Kit Johnson Kit Johnson
21 abr 2015 14:23:51

Al final encontré un código que funcionó para mí en este tutorial: http://www.webtipblog.com/change-wordpress-user-registration-welcome-email/

Kit Johnson Kit Johnson
24 abr 2015 09:06:07

Para abordar los comentarios sobre que no funciona en functions.php, eso se debe a que no puedes cargar una versión personalizada de una función pluggable tan tarde. No tiene nada que ver con que la respuesta sea antigua. Debes definir tu función personalizada antes de que se cargue la versión de WP. Cuando se carga en functions.php, la versión predeterminada del plugin ya está definida. Tienes que cargarlo como un plugin (no hay diferencia entre la respuesta dada y el enlace que publicó Kit, excepto por el paso adicional de cargarlo como plugin).

butlerblog butlerblog
9 dic 2019 15:37:49

No funciona en 2021, wp 5.6

trainoasis trainoasis
11 may 2021 17:16:53
Mostrar los 3 comentarios restantes
4
39

Para usuarios de 2018 en adelante:

Desde WordPress 4.9.0 hay nuevos filtros que puedes usar para esto (ya no necesitas un plugin):

Ejemplo de uso para el correo enviado al Administrador (puedes pegar esto en el archivo functions.php de tu tema):

add_filter( 'wp_new_user_notification_email_admin', 'custom_wp_new_user_notification_email', 10, 3 );

function custom_wp_new_user_notification_email( $wp_new_user_notification_email, $user, $blogname ) {
    $wp_new_user_notification_email['subject'] = sprintf( '[%s] Nuevo usuario %s registrado.', $blogname, $user->user_login );
    $wp_new_user_notification_email['message'] = sprintf( "%s ( %s ) se ha registrado en tu blog %s.", $user->user_login, $user->user_email, $blogname );
    return $wp_new_user_notification_email;
}
3 ene 2018 13:54:38
Comentarios

Alternativamente, se podrían usar los filtros wp_new_user_notification_email y wp_new_user_notification_email_admin. Los interesados pueden consultar la documentación completa y código fuente para wp_new_user_notification().

Pete Pete
10 ene 2018 05:42:22

Gracias Pete, parece que eso se introdujo en la versión 4.9.0 y parece una mejor solución.

Edu Wass Edu Wass
10 ene 2018 14:24:25

Hola. Yo también estoy usando el plugin WP Approve User.

Actualmente envía el correo estándar cuando se registran. No debería hacerlo. Debería decir que la cuenta necesita ser aprobada primero.

We Approve User tiene opción para configurar el texto cuando la cuenta ha sido aprobada y eso funciona bien. Es el paso previo antes de la aprobación.

¿Debo usar estos nuevos filtros que mencionaste?

Andrew Truckle Andrew Truckle
8 dic 2019 10:32:51

custom_wp_new_user_notification_email no cambia el contenido del correo electrónico del administrador para nosotros en wp 5.6

trainoasis trainoasis
11 may 2021 17:16:00
1

Esto no funcionará en functions.php. Necesitas colocar este código dentro de un plugin.

Si no sabes cómo crear un plugin para esto, simplemente usa este enlace.

No olvides tomar el código actualizado de esta función aquí.

17 sept 2015 16:45:29
Comentarios

Solo un punto de aclaración basado en la adición de filtros hooks a la función wp_new_user_notification(). Esta respuesta hace referencia específicamente a la sobreescritura de wp_new_user_notification() como una función pluggable. Sin embargo, esto no aplica al uso de los filtros wp_new_user_notification_email y wp_new_user_notification_email_admin. Esos pueden usarse en tu archivo functions.php (o un plugin específico del sitio).

butlerblog butlerblog
9 dic 2019 15:24:34