web-dev-qa-db-fra.com

Désactiver les e-mails de l'administrateur pour les enregistrements de nouveaux utilisateurs

Comment désactiver les notifications par courrier électronique pour l'utilisateur et l'administrateur lorsqu'un nouvel utilisateur est enregistré?

J'ai vu quelques suggestions et plugins mais aucun ne semble fonctionner. L'une consistait à prendre la fonction d'un des plugins:

if ( !function_exists('wp_new_user_notification') ) :
/**
 * Notify the blog admin of a new user, normally via email.
 *
 * @since 2.0
 *
 * @param int $user_id User ID
 * @param string $plaintext_pass Optional. The user's plaintext password
 */
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);

    // The blogname option is escaped with esc_html on the way into the database in sanitize_option
    // we want to reverse this for the plain text arena of emails.
    $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);

    $message  = sprintf(__('New user registration on your site %s:'), $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'), $blogname), $message);

    if ( empty($plaintext_pass) )
        return;

    $message  = sprintf(__('Username: %s'), $user_login) . "\r\n";
    $message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n";
    $message .= wp_login_url() . "\r\n";

    // wp_mail($user_email, sprintf(__('[%s] Your username and password'), $blogname), $message)

}
endif;

Les questions et les suggestions étaient assez anciennes, alors peut-être que WP 3.5 dépasse quelque chose.

Lors de l'inscription, je reçois toujours le courrier électronique de l'administrateur et un courrier électronique à l'utilisateur.

Je ne veux pas bloquer le courriel de mot de passe oublié cependant.

3
Rob

La fonction wp_new_user_notification est connectable. Cela signifie que vous pouvez le remplacer en déclarant votre version de cette fonction dans votre plugin/thème.

Donc, si vous souhaitez désactiver complètement toutes les notifications, procédez comme suit:

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

Cependant, je ne vous recommanderais pas de désactiver toutes les notifications, et vous recommanderais au moins d'envoyer une notification à un utilisateur (Comment un utilisateur trouve-t-il son mot de passe?). Donc, dans ce cas, votre code devrait être le suivant:

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(__('Username: %s'), $user_login) . "\r\n";
    $message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n";
    $message .= wp_login_url() . "\r\n";

    wp_mail($user_email, sprintf(__('[%s] Your username and password'), $blogname), $message);
}
endif;
9
Eugene Manuilov

Devait faire cela aujourd'hui, et trouvé que beaucoup de ces solutions semblent assez dépassées. Cela semble être un meilleur moyen de ne pas écraser les fonctions enfichables. Ce n'est pas mon code exact mais devrait être une bonne référence.

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' );

  }
} 
2
user119030

Selon cette page il suffirait d’utiliser ce code (pour désactiver complètement toutes les notifications):

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

C'est assez proche de la réponse donnée, mais un peu plus courte. J'ai pensé partager cela pour ce que ça vaut.

1
cptstarling

A partir de la version 4.6, il existe un paramètre pour désactiver les notifications de l'administrateur. https://developer.wordpress.org/reference/functions/wp_new_user_notification/

  • @since 4.6.0 Le paramètre $notify accepte que "l'utilisateur" envoie des notifications uniquement à l'utilisateur créé.
  • @param string $ notify Facultatif. Type de notification qui devrait arriver. Accepte 'admin' ou une chaîne vide (admin uniquement), 'utilisateur' ou 'les deux' (admin et utilisateur). Par défaut vide. * /
  • fonction wp_new_user_notification ($ user_id, $ deprecated = null, $ notify = 'user')
0
McPace