wake-up-neo.com

Deaktivieren Sie Admin-E-Mails für neue Benutzerregistrierungen

Wie kann ich E-Mail-Benachrichtigungen für den Benutzer und den Administrator deaktivieren, wenn ein neuer Benutzer registriert ist?

Ich habe ein paar Vorschläge und Plugins gesehen, aber keine scheinen zu funktionieren. Eine war, die Funktion von einem der Plugins zu übernehmen:

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;

Die Fragen und Vorschläge waren ziemlich alt, so dass vielleicht WP 3.5 über etwas hinwegfährt.

Bei der Anmeldung erhalte ich immer noch die Administrator-E-Mail und eine E-Mail an den Benutzer.

Ich möchte die E-Mail mit dem vergessenen Passwort jedoch nicht blockieren.

3
Rob

Die Funktion wp_new_user_notification ist steckbar. Dies bedeutet, dass Sie es überschreiben können, indem Sie Ihre Version dieser Funktion in Ihrem Plugin/Theme deklarieren.

Wenn Sie also alle Benachrichtigungen vollständig deaktivieren möchten, gehen Sie folgendermaßen vor:

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

Ich würde Ihnen jedoch nicht empfehlen, alle Benachrichtigungen zu deaktivieren, und ich würde Ihnen empfehlen, mindestens eine Benachrichtigung an einen Benutzer zu senden (Wie findet ein Benutzer sein Passwort heraus?). In diesem Fall sollte Ihr Code also folgendermaßen lauten:

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

Musste dies heute tun, und fand, dass viele dieser Lösungen ziemlich veraltet scheinen. Dies scheint ein besserer Weg zu sein, ohne steckbare Funktionen zu überschreiben. Dies ist nicht mein genauer Code, sollte aber eine gute Referenz sein.

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

Laut dieser Seite würde es ausreichen, diesen Code zu verwenden (um alle Benachrichtigungen vollständig zu deaktivieren):

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

Es ist ziemlich nah an der gegebenen Antwort, aber ein bisschen kürzer. Ich dachte daran, dies für das, was es wert ist, zu teilen.

1
cptstarling

Ab 4.6 gibt es einen Parameter zum Deaktivieren von Administratorbenachrichtigungen. https://developer.wordpress.org/reference/functions/wp_new_user_notification/

  • @since 4.6.0 Der Parameter $notify akzeptiert 'user' zum Senden einer Benachrichtigung nur an den erstellten Benutzer.
  • @param string $ notify Optional. Art der Benachrichtigung, die erfolgen soll. Akzeptiert 'admin' oder eine leere Zeichenfolge (nur admin), 'user' oder 'both' (admin und user). Standardmäßig leer. * /
  • funktion wp_new_user_notification ($ user_id, $ deprecated = null, $ notify = 'user')
0
McPace