¿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.

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 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;
}

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í

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.