Desactivar correos de administrador para nuevos registros de usuarios

11 mar 2013, 12:38:13
Vistas: 14.3K
Votos: 3

¿Cómo puedo desactivar las notificaciones por correo electrónico para el usuario y el administrador cuando se registra un nuevo usuario?

He visto algunas sugerencias y plugins pero ninguno parece funcionar. Una de ellas era tomar la función de uno de los plugins:

if ( !function_exists('wp_new_user_notification') ) :
/**
 * Notifica al administrador del blog sobre un nuevo usuario, normalmente por correo electrónico.
 *
 * @since 2.0
 *
 * @param int $user_id ID del usuario
 * @param string $plaintext_pass Opcional. La contraseña en texto plano del usuario
 */
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);

    // La opción blogname se escapa con esc_html al guardar en la base de datos en sanitize_option
    // queremos revertir esto para el texto plano de los correos.
    $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);

    $message  = sprintf(__('Nuevo registro de usuario en tu sitio %s:'), $blogname) . "\r\n\r\n";
    $message .= sprintf(__('Nombre de usuario: %s'), $user_login) . "\r\n\r\n";
    $message .= sprintf(__('Correo electrónico: %s'), $user_email) . "\r\n";

    @wp_mail(get_option('admin_email'), sprintf(__('[%s] Nuevo registro de usuario'), $blogname), $message);

    if ( empty($plaintext_pass) )
        return;

    $message  = sprintf(__('Nombre de usuario: %s'), $user_login) . "\r\n";
    $message .= sprintf(__('Contraseña: %s'), $plaintext_pass) . "\r\n";
    $message .= wp_login_url() . "\r\n";

    // wp_mail($user_email, sprintf(__('[%s] Tu nombre de usuario y contraseña'), $blogname), $message)

}
endif;

Las preguntas y sugerencias eran bastante antiguas, así que quizás WordPress 3.5 anula algo.

Al registrarse, sigo recibiendo el correo del administrador y un correo al usuario.

No quiero bloquear el correo de contraseña olvidada.

2
Comentarios

¿Existe algún plugin instalable disponible que tenga la misma funcionalidad?

orschiro orschiro
30 may 2016 08:15:07

@orschiro Aquí está - https://wordpress.org/plugins/disable-new-user-notifications/

Paras Shah Paras Shah
2 dic 2016 08:03:23
Todas las respuestas a la pregunta 4
4

La función wp_new_user_notification es "pluggable". Esto significa que puedes sobrescribirla declarando tu propia versión de esta función en tu plugin/tema.

Por lo tanto, si deseas desactivar todas las notificaciones completamente, hazlo así:

if ( !function_exists( 'wp_new_user_notification' ) ) :
function wp_new_user_notification( $user_id, $plaintext_pass = '' ) {
    return;
}
endif;

Sin embargo, no te recomendaría desactivar todas las notificaciones, y te aconsejaría que al menos envíes una notificación al usuario (¿Cómo sabría un usuario su contraseña?). Así que en este caso tu código debería ser el siguiente:

if ( !function_exists( 'wp_new_user_notification' ) ) :
function wp_new_user_notification( $user_id, $plaintext_pass = '' ) {
    $user = get_userdata( $user_id );

    $user_login = stripslashes($user->user_login);
    $user_email = stripslashes($user->user_email);

    $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);

    if ( empty($plaintext_pass) ) {
        return;
    }

    $message  = sprintf(__('Nombre de usuario: %s'), $user_login) . "\r\n";
    $message .= sprintf(__('Contraseña: %s'), $plaintext_pass) . "\r\n";
    $message .= wp_login_url() . "\r\n";

    wp_mail($user_email, sprintf(__('[%s] Tu nombre de usuario y contraseña'), $blogname), $message);
}
endif;
11 mar 2013 13:03:12
Comentarios

+1 @Rob ... ¿cómo obtiene un usuario una contraseña si desactivas la notificación? Este es un muy buen punto que menciona Eugene Manuilov.

s_ha_dum s_ha_dum
11 mar 2013 16:08:41

@s_ha_dum Tengo un formulario de registro en el frontend usando Gravity Forms, así que eso envía un correo por separado. ¿Esto bloqueará el correo de contraseña olvidada?

Rob Rob
11 mar 2013 16:14:39

@EugeneManuilov Acabo de probar el primer cuadro de código pero sigo recibiendo los correos.

Rob Rob
11 mar 2013 16:17:07

@Rob muéstranos tu código

Eugene Manuilov Eugene Manuilov
11 mar 2013 16:49:11
0

Según esta página sería suficiente usar este código (para desactivar todas las notificaciones completamente):

if ( !function_exists('wp_new_user_notification') ) {    
  function wp_new_user_notification( ) {}    
}

Es bastante similar a la respuesta dada, pero un poco más corto. Pensé en compartirlo por si puede ser útil.

2 jun 2015 14:18:58
0

A partir de la versión 4.6 existe un parámetro para desactivar las notificaciones de administración. https://developer.wordpress.org/reference/functions/wp_new_user_notification/

  • @since 4.6.0 El parámetro $notify acepta 'user' para enviar notificación solo al usuario creado.
  • @param string $notify Opcional. Tipo de notificación que debe ocurrir. Acepta 'admin' o una cadena vacía (solo admin), 'user', o 'both' (admin y usuario). Por defecto vacío. */
  • function wp_new_user_notification( $user_id, $deprecated = null, $notify = 'user' )
10 feb 2017 21:49:56
0

Tuve que hacer esto hoy, y encontré que muchas de estas soluciones parecen bastante desactualizadas. Esta parece ser una mejor manera sin sobrescribir funciones enchufables. Este no es mi código exacto pero debería ser una buena referencia.

add_action( 'register_post', 'maybe_stop_notifications', 10, 3 ); 

function maybe_stop_notifications ( $sanitized_user_login, $user_email, $errors ) { 

  if( empty( $errors->get_error_code() )) { 

       remove_action( 'register_new_user', 'wp_send_new_user_notifications' );

  }
} 
4 may 2017 18:57:36