it-swarm.com.de

Deaktivieren Sie die Benutzerregistrierungskennwort-E-Mail

Also, WordPress 4.3 hat ein neues Passwortsystem, wie wir alle wissen. Leider hat dieses neue System die Möglichkeit beseitigt,NICHTneuen Benutzern eine E-Mail zu senden.

Mein Kunde verwendete ein System, in dem er eine benutzerdefinierte E-Mail an seine Kunden sendete, deren E-Mails manuell registrierte und ihnen anschließend eine E-Mail mit den Anmeldeinformationen mit einer benutzerdefinierten Nachricht sendete. Wir sind uns bewusst, dass dieses neue System versucht, sicherer zu sein, aber dies funktioniert nicht für das Maß an Kontrolle, das er gerne hätte.

Ich habe auf meiner Suche nach einer Lösung zum Deaktivieren dieser E-Mails den folgenden Code gefunden, aber ich denke, dass die Benachrichtigungs-E-Mails nur deaktiviert werden, wenn die E-Mail eines Benutzers für zuvor registrierte Benutzer GEÄNDERT wurde, nicht beim erstmaligen Erstellen:

add_filter( 'send_password_change_email', '__return_false');
add_filter( 'send_email_change_email', '__return_false');

Kennt jemand eine Möglichkeit, diese anfänglichen Passwort-E-Mails zu deaktivieren, die nach der Registrierung gesendet werden?

Vielen Dank.

12
Lisa Cerilli

Sie können diese E-Mail mit dem phpmailer_init hook abfangen, bevor sie gesendet wird.

Standardmäßig wird dieser Haken ausgelöst, bevor eine E-Mail gesendet wird. In der folgenden Funktion ist $phpmailer eine Instanz von PHPMailer , und Sie können seine Methoden verwenden, um den Standardempfänger zu entfernen und die E-Mail zu bearbeiten, bevor sie gesendet wird.

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
    }
}
8
sxalexander

Tatsächlich hängt es davon ab, wie Sie den neuen Benutzer erstellen. Wenn Sie dies über Administration - Benutzer - Neu hinzufügen tun, sind Sie richtig. In 4.3 können Sie das Versenden der Benachrichtigungs-E-Mail leider nicht deaktivieren. Aber wenn Sie wirklich einen neuen Benutzer ohne die E-Mail erstellen möchten, gibt es einen Weg.

Sie können ein kleines Plugin erstellen, in dem Sie selbst über die Funktion wp_insert_user ein neues Konto erstellen. Standardmäßig werden keine E-Mails gesendet.

Diese Funktion kann so aufgerufen werden.

wp_insert_user( $userdata );

Wobei der Parameter userdata ein Array ist, in dem Sie alle erforderlichen Informationen übergeben können.

$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;
}

Weitere Informationen finden Sie im Codex hier .

3
Emetrop

Die Funktion wp_new_user_notification ist steckbar, sodass Sie sie überschreiben können, indem Sie Ihre eigene definieren. Sie sollten in der Lage sein, die gesamte Funktion von wp-includes/pluggable.php in Ihr Plugin (oder functions.php) zu kopieren und die Zeile zu entfernen, die die E-Mail versendet.

3

Um dies in Ihrem Thema zu lösen, erstellen Sie ein neues mu-plugin , indem Sie eine neue Datei wp_new_user_notifications.php erstellen (der Name liegt bei Ihnen) und diese in den Ordner wp-content/mu-plugins legen. Wenn es keinen solchen Ordner gibt, erstellen Sie einen. Denken Sie daran, die PHP-Datei direkt in den Ordner zu legen, nicht in einen Unterordner.

Dann fahren Sie fort als Simon schlug vor - kopieren Sie die wp_new_user_notifications.php-Methode von wp-includes/pluggable.php in Ihre brandneue wp_new_user_notifications.php-Datei und ändern Sie sie nach Bedarf.

So beantworten Sie Ihre Frage: Zum Deaktivieren des ursprünglichen Kennworts reichen E-Mails aus, um den letzten wp_mail-Methodenaufruf zu entfernen.

1
fandasson
add_filter('send_password_change_email', '__return_false');

Funktioniert. Aber es ist wesentlich, dass es dem Plugin selbst hinzugefügt wird und nicht der functions.php für das Theme.

Mögen.

class ... {
  public function __construct() {
    ...
    $this->init_hooks();
  }

  public function init_hooks() {
    add_filter('send_password_change_email', '__return_false');
  }
}
0
Philip