it-swarm.com.de

neue Benutzerregistrierungs-E-Mails deaktivieren

Ich möchte die E-Mails deaktivieren, die der Administrator erhält, wenn sich ein neuer Benutzer registriert. Wir erhalten viele E-Mails wegen neuer Registrierungen (es handelt sich um legitime Registrierungen), aber ich möchte nicht, dass in der E-Mail darauf hingewiesen wird, dass sich immer wieder jemand angemeldet hat.

Bisher habe ich versucht, Plugins zu installieren aber sie funktionieren nicht. (Support sagt sogar, dass sie nicht mehr funktionieren). Bei der Suche hier war die einzige Frage, die ich finden konnte: Deaktiviere Admin-E-Mails für neue Benutzerregistrierungen Das ist von vor drei Jahren und scheint auch nicht zu funktionieren. Ich habe es mit diesem Code versucht:

// Redefine user notification function
if ( !function_exists('wp_new_user_notification') ) {
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);

    $message  = sprintf(__('New user registration on your blog %s:'), get_option('blogname')) . "rnrn";
    $message .= sprintf(__('Username: %s'), $user_login) . "rnrn";
    $message .= sprintf(__('E-mail: %s'), $user_email) . "rn";


      //  @wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), get_option('blogname')), $message);

        if ( empty($plaintext_pass) )
            return;

        $message  = __('Hi there,') . "rnrn";
        $message .= sprintf(__("Welcome to %s! Here's how to log in:"), get_option('blogname')) . "rnrn";
        $message .= wp_login_url() . "rn";
        $message .= sprintf(__('Username: %s'), $user_login) . "rn";
        $message .= sprintf(__('Password: %s'), $plaintext_pass) . "rnrn";
        $message .= sprintf(__('If you have any problems, please contact me at %s.'), get_option('admin_email')) . "rnrn";
        $message .= __('Adios!');

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

    }
}

zu meinem theme functions.php (es hat die Zeile @wp_mail auskommentiert) und ich habe sogar versucht, diese Zeile in wp-includes/pluggable.php auskommentieren, aber ich erhalte immer noch die E-Mails.

Ich benutze gerade WordPress 4.5.3. (AKTUALISIERT auf 4.6 als Teil dieses Prozesses)

Ich versuche so klar wie möglich zu sein. Ich möchte nicht, dass die E-Mail, die an den Benutzer gesendet wird, angehalten wird, da diese weiterhin angehalten werden soll. Wie kann ich jedoch festlegen, dass die E-Mail an den Administrator angehalten wird?

2
rudtek

Generic Pluggable Approach für WordPress <4.6 (Siehe @ birgires Antwort für> 4.6)

Steckbare Funktionen sind eines der bedrückendsten Relikte der Vergangenheit von WordPress und mit einer Reihe von Komplikationen verbunden. Das direkte Ändern der Core-Datei (was, wie in den Kommentaren von @Jarmerson erwähnt, nicht ratsam ist) hat nicht funktioniert. Ich habe den Verdacht, dass ein anderes Plugin in Ihrer Installation das Plugin überschreibt.

Die wp-includes/pluggable.php-Datei wird nach aktiven Plugins und Mu-Plugins geladen, jedoch vor dem aktiven Thema. Dies bedeutet, dass die "Pluggable Functions" nur durch Deklarationen in einem Plugin ersetzt werden können.

Die Änderung, die Sie in der anderen Antwort entdeckt haben, gilt für eine viel ältere Version von WordPress. Beim Ersetzen einer steckbaren Funktion sollten Sie mit die ursprüngliche Funktion, wie sie in der Version Ihrer Installation vorhanden ist beginnen (in Ihrem Fall v4.5.3). Die Lösung sieht dabei folgendermaßen aus (Kommentare weggelassen; keine Zeilen hinzugefügt, nur entfernt):

function wp_new_user_notification( $user_id, $deprecated = null, $notify = '' ) {
  if ( $deprecated !== null )
    _deprecated_argument( __FUNCTION__, '4.3.1' );

  if ( 'admin' === $notify || ( empty( $deprecated ) && empty( $notify ) ) ) 
    return;

  global $wpdb, $wp_hasher;
  $user     = get_userdata( $user_id );
  $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
  $key      = wp_generate_password( 20, false );

  do_action( 'retrieve_password_key', $user->user_login, $key );

  if ( empty( $wp_hasher ) ) {
    require_once ABSPATH . WPINC . '/class-phpass.php';
    $wp_hasher = new PasswordHash( 8, true );
  }

  $hashed = time() . ':' . $wp_hasher->HashPassword( $key );
  $wpdb->update( $wpdb->users, array( 'user_activation_key' => $hashed ), array( 'user_login' => $user->user_login ) );

  $message = sprintf(__('Username: %s'), $user->user_login) . "\r\n\r\n";
  $message .= __('To set your password, visit the following address:') . "\r\n\r\n";
  $message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login') . ">\r\n\r\n";
  $message .= wp_login_url() . "\r\n";

  wp_mail($user->user_email, sprintf(__('[%s] Your username and password info'), $blogname), $message);
}

Ich habe die traditionelle if( !function_exists() ) -Prüfung weggelassen, die normalerweise eine steckbare Überschreibung einschließt, da in diesem Fall ein möglicher doppelter Deklarationsfehler wünschenswert ist - dies würde darauf hinweisen, dass ein anderes Plug-in die wp_new_user_notification()-Funktion vor Ihnen überschrieben hat und daher Ihr Versuch dies zu tun ist völlig ignoriert.

Ich würde empfehlen, diese Funktion in einem mu-plugin zu platzieren, da dies die Wahrscheinlichkeit verringert, dass ein anderes Plugin Sie hart trifft. Ändern Sie in keinem Fall die Kerndatei wp-includes/pluggable.php wie oben beschrieben.

5
bosco

Ansatz für WordPress 4.6+

Überprüfen Sie den Patch in Ticket # 36009 , der in WordPress Version 4.6 zusammengeführt wurde.

Es fügt hinzu die Option 'user' für den Eingabeparameter $notify von wp_new_user_notification() , um das Senden dieser E-Mails an den Administrator zu überspringen.

Wie es funktioniert

Die Funktion register_new_user() enthält diesen Teil:

do_action( 'register_new_user', $user_id );

Die E-Mail-Benachrichtigungen werden aktiviert mit:

add_action( 'register_new_user', 'wp_send_new_user_notifications' );

wobei der Rückruf definiert ist als:

function wp_send_new_user_notifications( $user_id, $notify = 'both' ) {
        wp_new_user_notification( $user_id, null, $notify );
}

Problemumgehung

Wir könnten daher diesen Ansatz versuchen (ungetestet) mit einem benutzerdefinierten Rückruf und entfernen Sie den Standard:

add_action( 'init', function()
{
    remove_action( 'register_new_user',   'wp_send_new_user_notifications'         );
    add_action(    'register_new_user',   'wpse236122_send_new_user_notifications' );
} );

function wpse236122_send_new_user_notifications(  $user_id, $notify = 'user' )
{   
    wp_send_new_user_notifications( $user_id, $notify );    
}

hier ändern wir die Standardeinstellung von 'both' in 'user'.

Es ist erwähnenswert, dass wp_send_new_user_notifications() auch in diese Aktionen eingebunden ist:

  • network_site_new_created_user
  • network_site_users_created_user
  • network_user_new_created_user
  • edit_user_created_user

Wir könnten mit ihnen auf ähnliche Weise umgehen wie oben beschrieben.

4
birgire

Nach einigen Recherchen habe ich festgestellt, dass Sie alle Benachrichtigungs-E-Mails deaktivieren können, aber nicht diejenigen, die an den Administrator senden.

Gemäß Ihrer ursprünglichen Frage kann ich einige Ratschläge zum Umgang mit unerwünschten Benachrichtigungs-E-Mails aus der WordPress-Benutzerregistrierung und E-Mails zum Zurücksetzen des Passworts geben.

Angenommen, Sie haben eine cPanel-Umgebung, in der Ihre Installation ausgeführt wird, befolgen Sie einfach diese Schritte und Sie haben diese bestimmte E-Mail effektiv entfernt.

Zugriff Filterung auf Kontoebene vom cPanel-Administrator. In diesem Bereich können Sie Filter für Ihr Hauptkonto verwalten. Sie möchten Filter erstellen und fahren mit dem Erstellen eines neuen Filters für alle E-Mails in Ihrem Konto fort.

Wählen Sie im Feld Regel Nach und Gleich aus. Hinweis: Sie können auch Filter für andere Bedingungen erstellen . Das letzte Feld ist ein Textbereich, in den Sie die E-Mail-Adresse eingeben, mit der Sie arbeiten. Unterhalb des Bereichs rules findet die Magie statt. Wählen Sie Nachricht verwerfen . Es gibt auch andere Möglichkeiten.

Ich habe immer eine E-Mail-Adresse erstellt, von der ich weiß, dass sie nicht verwendet wird, und den Filter damit erstellt.

Ich könnte über steckbare WordPress-Hooks und dergleichen weitermachen, aber es gibt nichts, was genau so funktioniert, wie Sie es möchten. Schade ...

2
Jarmerson