Deshabilitar correo electrónico de contraseña de registro de usuario

12

Entonces, WordPress 4.3 tiene un nuevo sistema de contraseñas como todos sabemos. Desafortunadamente, este nuevo sistema ha eliminado la capacidad de NO enviar a los nuevos usuarios un correo electrónico.

Mi cliente estaba usando un sistema donde enviaba un correo electrónico personalizado a sus clientes, registraba manualmente sus correos electrónicos y luego les enviaba un correo electrónico con la información de inicio de sesión con un mensaje personalizado. Somos conscientes de que este nuevo sistema está tratando de ser más seguro, pero esto no funciona por la cantidad de control que le gustaría.

Encontré el siguiente código en mi búsqueda de una solución para desactivar estos correos electrónicos, pero creo que solo desactivan los correos electrónicos de notificación si el correo electrónico de un usuario es CAMBIADO para usuarios registrados previamente, no cuando se crea por primera vez:

add_filter( 'send_password_change_email', '__return_false');
add_filter( 'send_email_change_email', '__return_false');

¿Alguien sabe de alguna manera de desactivar estos correos electrónicos de contraseña iniciales enviados después del registro?

Gracias.

    
pregunta Lisa Cerilli 21.08.2015 - 10:15

5 respuestas

8

Puede interceptar este correo electrónico antes de enviarlo mediante el enlace phpmailer_init .

Por defecto, este enlace se dispara antes de que se envíe cualquier correo electrónico. En la siguiente función, $phpmailer será una instancia de PHPMailer , y puede usar sus métodos para eliminar el destinatario predeterminado y manipular el correo electrónico antes de ser enviado.

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

    # Intercept username and password email by checking subject line
    if( strpos($phpmailer->Subject, 'Your username and password info') ){
        # clear the recipient list
        $phpmailer->ClearAllRecipients();
        # optionally, send the email to the WordPress admin email
        $phpmailer->AddAddress($admin_email);
    }else{
        #not intercepted
    }
}
    
respondido por el sxalexander 08.12.2015 - 00:25
3

En realidad depende de cómo se crea el nuevo usuario. Si lo hace desde la administración - Usuarios - Agregar nuevo, tiene razón. Desafortunadamente, en 4.3 no puede deshabilitar el envío del correo electrónico de notificación. Pero si realmente desea crear un nuevo usuario sin el correo electrónico, hay una manera.

Puedes crear un pequeño complemento donde crearías una nueva cuenta por ti mismo a través de la función wp_insert_user , que no envía ningún correo electrónico de forma predeterminada.

Esta función puede llamarse así.

wp_insert_user( $userdata );

Donde el parámetro userdata es una matriz donde puede pasar toda la información necesaria.

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

$user_id = wp_insert_user( $userdata ) ;

//On success
if ( ! is_wp_error( $user_id ) ) {
    echo "User created : ". $user_id;
}

Para obtener más información, consulte el códice aquí .

    
respondido por el Emetrop 21.08.2015 - 18:41
3

La función wp_new_user_notification es conectable, por lo que puede anularla definiendo la suya propia. Debería poder copiar la función completa de wp-includes/pluggable.php en su complemento (o functions.php ) y eliminar la línea que envía el correo electrónico.

    
respondido por el Simon Blackbourn 25.08.2015 - 13:12
1

Para resolver esto en su tema, cree un nuevo mu-plugin creando el nuevo archivo wp_new_user_notifications.php (el nombre depende de usted) y ponerlo en la carpeta wp-content/mu-plugins . Si no hay una carpeta como esa, crea una. Recuerde colocar el archivo php directamente en la carpeta, no en ninguna subcarpeta.

Continúa como Simon sugirió : copia el método wp_new_user_notifications.php de wp-includes/pluggable.php en tu nuevo wp_new_user_notifications.php de archivo y modificar según sea necesario.

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

    
respondido por el fandasson 16.10.2015 - 15:25
0
add_filter('send_password_change_email', '__return_false');

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

Me gusta.

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

  public function init_hooks() {
    add_filter('send_password_change_email', '__return_false');
  }
}
    
respondido por el Philip 30.01.2018 - 15:54

Lea otras preguntas en las etiquetas