Desactivar el correo electrónico de registro de contraseña de usuario

21 ago 2015, 11:15:54
Vistas: 17K
Votos: 13

Como todos sabemos, WordPress 4.3 introdujo un nuevo sistema de contraseñas. Desafortunadamente, este nuevo sistema eliminó la posibilidad de NO enviar un correo electrónico a los nuevos usuarios.

Mi cliente estaba usando un sistema donde enviaba un correo personalizado a sus clientes, registrando sus correos manualmente y luego enviándoles un mensaje con la información de inicio de sesión y un mensaje personalizado. Sabemos que este nuevo sistema intenta ser más seguro, pero no funciona para el nivel de control que él desea.

En mi búsqueda de una solución para desactivar estos correos, encontré el siguiente código, pero creo que solo desactiva las notificaciones cuando un usuario cambia su correo electrónico para usuarios ya registrados, no cuando se crea por primera vez:

// Desactiva los correos de cambio de contraseña y cambio de email
add_filter( 'send_password_change_email', '__return_false');
add_filter( 'send_email_change_email', '__return_false');

¿Alguien sabe cómo desactivar estos correos iniciales de contraseña que se envían después del registro?

Gracias.

1
Comentarios

¿Has probado esto? add_filter( 'user_registration_email', '__return_false');

Abhik Abhik
23 ago 2015 08:06:47
Todas las respuestas a la pregunta 5
1
10

Puedes interceptar este correo electrónico antes de que sea enviado utilizando el hook phpmailer_init.

Por defecto, este hook se activa antes de que cualquier correo sea enviado. En la función de abajo, $phpmailer será una instancia de PHPMailer, y puedes usar sus métodos para eliminar el destinatario por defecto y manipular el correo antes de que sea enviado.

add_action('phpmailer_init', 'wse199274_intercept_registration_email');
function wse199274_intercept_registration_email($phpmailer){
    $admin_email = get_option( 'admin_email' );

    # Interceptar correo de usuario y contraseña verificando la línea de asunto
    if( strpos($phpmailer->Subject, 'Your username and password info') ){
        # limpiar la lista de destinatarios
        $phpmailer->ClearAllRecipients();
        # opcionalmente, enviar el correo al email del administrador de WordPress
        $phpmailer->AddAddress($admin_email);
    }else{
        # no interceptado
    }
}
8 dic 2015 01:25:08
Comentarios

esto funciona perfectamente, resolvió completamente mi problema y es ideal para otros usos también. ¡Gracias por una excelente respuesta!

pattyd pattyd
19 feb 2017 22:33:29
1

Realmente depende de cómo crees el nuevo usuario. Si lo haces desde la administración - Usuarios - Añadir nuevo, tienes razón. En la versión 4.3 desafortunadamente no puedes desactivar el envío del correo de notificación. Pero si realmente quieres crear un nuevo usuario sin el correo, hay una manera.

Puedes crear un pequeño plugin donde crearías una nueva cuenta manualmente usando la función wp_insert_user, que por defecto no envía ningún correo electrónico.

Esta función se puede llamar así:

wp_insert_user( $userdata );

Donde el parámetro userdata es un array donde puedes pasar toda la información necesaria.

$userdata = array(
    'user_login'  =>  'login',
    'user_pass'   =>  'password',
);

$user_id = wp_insert_user( $userdata ) ;

// En caso de éxito
if ( ! is_wp_error( $user_id ) ) {
    echo "Usuario creado: ". $user_id;
}

Para más información consulta el codex aquí.

21 ago 2015 19:41:51
Comentarios

¿Entonces esta función se llama cada vez que se crea un nuevo usuario, supongo?

Lisa Lisa
23 ago 2015 07:55:08
1

La función wp_new_user_notification es enchufable (pluggable), por lo que puedes sobrescribirla definiendo tu propia versión. Deberías poder copiar toda la función desde wp-includes/pluggable.php a tu plugin (o al archivo functions.php) y eliminar la línea que envía el correo electrónico.

25 ago 2015 14:12:06
Comentarios

No puedes sobreescribir wp_new_user_notification en el functions.php del tema, porque las funciones pluggables se cargan antes que el tema. Debe sobreescribirse en un plugin o mu-plugin. Lee más: http://wordpress.stackexchange.com/a/55966/56759

fandasson fandasson
16 oct 2015 16:16:00
0

Para resolver esto en tu tema, crea un nuevo mu-plugin generando un archivo wp_new_user_notifications.php (el nombre es a tu elección) y colócalo en la carpeta wp-content/mu-plugins. Si no existe dicha carpeta, créala. Recuerda colocar el archivo php directamente en la carpeta, no en ningún subdirectorio.

Luego continúa como Simon sugirió - copia el método wp_new_user_notifications.php desde wp-includes/pluggable.php a tu nuevo archivo wp_new_user_notifications.php y modifícalo según sea necesario.

Para responder a tu pregunta: para desactivar los correos electrónicos con contraseña inicial es suficiente con eliminar la última llamada al método wp_mail.

16 oct 2015 16:25:02
0
add_filter('send_password_change_email', '__return_false');

Funciona. Pero es esencial que se agregue al propio plugin y no al functions.php del tema.

Como:

class ... {
  public function __construct() {
    ...
    $this->init_hooks();
  }

  public function init_hooks() {
    add_filter('send_password_change_email', '__return_false');
  }
}
30 ene 2018 16:54:53