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

13

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

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.

He encontrado 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 se CAMBIA para usuarios registrados anteriormente, no cuando se creó 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 inicial enviados después del registro?

Gracias.

Lisa Cerilli
fuente
2
¿Has probado esto? add_filter( 'user_registration_email', '__return_false');
Abhik

Respuestas:

9

Puede interceptar este correo electrónico antes de enviarlo utilizando el phpmailer_initenlace.

Por defecto, este enlace se activa antes de enviar cualquier correo electrónico. En la siguiente función, $phpmailerserá una instancia de PHPMailer , y puede utilizar sus métodos para eliminar el destinatario predeterminado y manipular el correo electrónico antes de enviarlo.

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
    }
}
sxalexander
fuente
esto funciona a la perfección, resolvió por completo mi problema y es perfecto para otros usos también. Gracias por una gran respuesta!
pattyd
3

En realidad, depende de cómo cree 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.

Puede crear un pequeño complemento donde crearía una nueva cuenta usted mismo a través de la wp_insert_userfunción, que no envía ningún correo electrónico de forma predeterminada.

Esta función se puede llamar así.

wp_insert_user( $userdata );

Donde el userdataparámetro 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í .

Emetrop
fuente
Entonces, ¿esta función se llama cada vez que se crea un nuevo usuario?
Lisa Cerilli
3

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

Simon Blackbourn
fuente
1
No puede anular wp_new_user_notification en funciones del tema.php, porque las funciones conectables se cargan antes del tema. Debe anularse en plugin o mu-plugin. Leer más: wordpress.stackexchange.com/a/55966/56759
fandasson
1

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

Luego continúe como Simon sugirió : copie el wp_new_user_notifications.phpmétodo wp-includes/pluggable.phpen su nuevo wp_new_user_notifications.phparchivo y modifíquelo 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 wp_mailllamada al método.

fandasson
fuente
0
add_filter('send_password_change_email', '__return_false');

Trabajos. Pero es esencial que se agregue al complemento por sí mismo 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');
  }
}
Philip
fuente