Jak zmienić domyślny e-mail rejestracyjny? (wtyczka i / lub nie-wtyczka)

54

Po rejestracji nowego użytkownika WP wysyła wiadomość e-mail z loginem / hasłem oraz link do strony logowania.

Czy istnieje sposób na zmianę tego defensywnego szablonu wiadomości e-mail? Chciałbym również zmienić temat i nadawcę.

Edycja: Dla każdego zainteresowanego, oto rozwiązanie wtyczki.

mike23
źródło

Odpowiedzi:

62

nowy e-mail użytkownika jest wysyłany za pomocą wp_new_user_notification()funkcji, którą można podłączyć, co oznacza, że ​​można go zastąpić:

// 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
źródło
@Bainternet Nie mogę tego uruchomić, dodałem to do mojego pliku funkcji, ale standardowy e-mail wciąż wysyła. Jestem na wielu stronach, ale to nie powinno mieć znaczenia, prawda?
6
OK, rozumiem teraz, wydaje się, że działa tylko jako osobna wtyczka, a nie po dodaniu do functions.phppliku. Teraz działa idealnie, jeszcze raz dziękuję za ten ładny kawałek kodu!
Czy to działa również w przypadku wielu witryn? Widzę, że multisite ma kilka funkcji w ms-functions.php do wysyłania powiadomień e-mail.
Sisir
Wydaje wpmu_signup_user_notificationmi się, że używa wielu witryn .
Wyck
Ta odpowiedź ma kilka lat. Przyjęta odpowiedź nie działa dla mnie. (Dodanie go do functions.php nie ma znaczenia dla żadnego z e-maili wysyłanych, gdy rejestruje się nowy użytkownik.) Czy powinienem opublikować nowe pytanie?
Kit Johnson
22

Od 2018 r. Użytkownicy:

Od WordPress 4.9.0 istnieją nowe filtry, których możesz użyć do tego (nie potrzebujesz już wtyczki):

Przykład użycia w wiadomości e-mail wysłanej do administratora (możesz wkleić to w pliku functions.php motywu ):

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
źródło
Alternatywnie można użyć filtrów wp_new_user_notification_emaili wp_new_user_notification_email_admin. Zainteresowani mogą zapoznać się z pełną dokumentację i kod źródłowy dla wp_new_user_notification().
Pete,
Dzięki Pete, wygląda na to, że został wprowadzony w wersji 4.9.0 i wygląda na lepsze rozwiązanie.
Edu Wass,
3

To nie będzie działać na functions.php, musisz umieścić ten kod we wtyczce.

jeśli nie chcesz teraz tworzyć wtyczki, skorzystaj z tego linku

nie zapomnij wziąć kod aktualizacji tej formy funkcji tutaj

Erez Lieberman
źródło