Wie ändere ich die Standard-Registrierungs-E-Mail? (Plugin und / oder Nicht-Plugin)

54

Nach einer neuen Benutzerregistrierung sendet WP eine E-Mail mit dem Login / Passwort und einem Link zur Login-Seite.

Gibt es eine Möglichkeit, diese Standard-E-Mail-Vorlage zu ändern? Ich möchte auch das Thema und den Absender ändern.

Edit: Für alle Interessierten gibt es hier eine Plugin-Lösung.

mike23
quelle

Antworten:

62

Die neue Benutzer-E-Mail wird mit einer wp_new_user_notification()Funktion gesendet, die steckbar ist und die Sie überschreiben können:

// 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')) . "\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'), get_option('blogname')), $message);

        if ( empty($plaintext_pass) )
            return;

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

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

    }
}
Bainternet
quelle
@Bainternet Ich kann das scheinbar nicht zum Laufen bringen. Ich habe es zu meiner Funktionsdatei hinzugefügt, aber die Standard-E-Mail wird weiterhin gesendet. Ich bin auf Multisite, aber das sollte doch egal sein, oder?
6
OK, jetzt verstanden, es scheint nur als separates Plugin zu funktionieren, nicht wenn Sie es zu Ihrer functions.phpDatei hinzufügen . Jetzt funktioniert es perfekt, nochmals vielen Dank für diesen schönen Code!
Funktioniert es auch für mehrere Standorte? Ich kann sehen, dass multisite eine Reihe von Funktionen in ms-functions.php zum Versenden von Benachrichtigungs-E-Mails hat.
Sisir
Multisite-Anwendungen, wpmu_signup_user_notificationdenke ich.
Wyck
Diese Antwort ist mehrere Jahre alt. Die akzeptierte Antwort funktioniert bei mir nicht. (Das Hinzufügen zu functions.php hat keinen Einfluss auf die E-Mails, die gesendet werden, wenn sich ein neuer Benutzer registriert.) Soll ich eine neue Frage stellen?
Kit Johnson
22

Für Benutzer ab 2018:

Seit WordPress 4.9.0 gibt es neue Filter, die Sie dafür verwenden können (kein Plugin mehr erforderlich):

Verwendungsbeispiel für eine E-Mail an Admin (Sie können dies in die functions.php Ihres Themas einfügen ):

add_filter( 'wp_new_user_notification_email_admin', 'custom_wp_new_user_notification_email', 10, 3 );

function custom_wp_new_user_notification_email( $wp_new_user_notification_email, $user, $blogname ) {
    $wp_new_user_notification_email['subject'] = sprintf( '[%s] New user %s registered.', $blogname, $user->user_login );
    $wp_new_user_notification_email['message'] = sprintf( "%s ( %s ) has registerd to your blog %s.", $user->user_login, $user->user_email, $blogname );
    return $wp_new_user_notification_email;
}
Edu Wass
quelle
Alternativ könnte man die Filter wp_new_user_notification_emailund wp_new_user_notification_email_adminverwenden. Interessenten können die Besuche vollständige Dokumentation und Quellcode für wp_new_user_notification().
Pete
Vielen Dank, Pete, so wie es aussieht, wurde es in 4.9.0 eingeführt und sieht nach einer besseren Lösung aus.
Edu Wass
3

Dies funktioniert nicht mit functions.php, Sie müssen diesen Code in das Plugin einfügen.

Wenn Sie jetzt kein Plugin dafür erstellen möchten, verwenden Sie einfach diesen Link

Vergessen Sie nicht, den Update-Code dieser Funktionsform hier zu übernehmen

Erez Lieberman
quelle