¿Cómo cambiar el correo electrónico de registro predeterminado? (complemento y / o no complemento)

54

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

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

Editar: Para cualquier persona interesada, aquí hay una solución de complemento.

mike23
fuente

Respuestas:

62

el correo electrónico del nuevo usuario se envía utilizando la wp_new_user_notification()función que se puede conectar, lo que significa que puede sobrescribirlo:

// Redefine user notification function
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(__('New user registration on your blog %s:'), get_option('blogname')) . "\r\n\r\n";
        $message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
        $message .= sprintf(__('E-mail: %s'), $user_email) . "\r\n";

        @wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), get_option('blogname')), $message);

        if ( empty($plaintext_pass) )
            return;

        $message  = __('Hi there,') . "\r\n\r\n";
        $message .= sprintf(__("Welcome to %s! Here's how to log in:"), get_option('blogname')) . "\r\n\r\n";
        $message .= wp_login_url() . "\r\n";
        $message .= sprintf(__('Username: %s'), $user_login) . "\r\n";
        $message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n\r\n";
        $message .= sprintf(__('If you have any problems, please contact me at %s.'), get_option('admin_email')) . "\r\n\r\n";
        $message .= __('Adios!');

        wp_mail($user_email, sprintf(__('[%s] Your username and password'), get_option('blogname')), $message);

    }
}
Bainternet
fuente
@Bainternet Parece que no puedo hacer que esto funcione, lo he agregado a mi archivo de funciones, pero el correo electrónico estándar sigue enviando. Estoy en varios sitios, pero eso no debería importar, ¿verdad?
66
OK lo tengo ahora, solo parece funcionar como un complemento separado, no cuando lo agregas a tu functions.phparchivo. Ahora funciona perfecto, ¡gracias de nuevo por ese bonito código!
¿Funciona también para multisitio? Puedo ver que multisitio tiene muchas funciones dentro de ms-functions.php para enviar correos electrónicos de notificación.
Sisir
Usos multisitio wpmu_signup_user_notification, creo.
Wyck
Esta respuesta tiene varios años. La respuesta aceptada no funciona para mí. (Agregarlo a functions.php no hace ninguna diferencia en ninguno de los correos electrónicos enviados cuando se registra un nuevo usuario). ¿Debo publicar una nueva pregunta?
Kit Johnson
23

Para usuarios de 2018 en adelante:

Desde WordPress 4.9.0 hay nuevos filtros que puede usar para esto (ya no necesita un complemento):

Ejemplo de uso en el correo electrónico enviado a Admin (puede pegar esto en las funciones de su tema.php ):

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] New user %s registered.', $blogname, $user->user_login );
    $wp_new_user_notification_email['message'] = sprintf( "%s ( %s ) has registerd to your blog %s.", $user->user_login, $user->user_email, $blogname );
    return $wp_new_user_notification_email;
}
Edu Wass
fuente
Alternativamente, uno podría usar los filtros wp_new_user_notification_emaily wp_new_user_notification_email_admin. Los interesados ​​pueden consultar la documentación completa y el código fuente de wp_new_user_notification().
Pete
Gracias Pete, parece que se introdujo en 4.9.0 y parece una mejor solución.
Edu Wass
3

Esto no funcionará en functions.php, necesita poner este código dentro del complemento.

si ahora no puede hacer un complemento para esto, simplemente use este enlace

no olvides tomar el código de actualización de este formulario de función aquí

Erez Lieberman
fuente