Как изменить адрес электронной почты для регистрации по умолчанию? (плагин и / или не плагин)

54

После регистрации нового пользователя WP рассылает электронное письмо с логином / паролем и ссылкой на страницу входа.

Есть ли способ изменить этот шаблон электронной почты по умолчанию? Я также хотел бы изменить тему и отправителя.

Изменить: Для тех, кто заинтересован, вот плагин решение.

mike23
источник

Ответы:

62

электронное письмо нового пользователя отправляется с помощью wp_new_user_notification()подключаемой функции, что означает, что вы можете перезаписать его:

// 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
источник
@Bainternet Я не могу заставить это работать, я добавил это в свой файл функций, но стандартная электронная почта продолжает отправлять. Я нахожусь на мультисайте, но это не должно иметь значения, верно?
6
Хорошо, получил его сейчас, кажется, он работает только как отдельный плагин, а не когда вы добавляете его в свой functions.phpфайл. Теперь он работает отлично, еще раз спасибо за этот хороший кусок кода!
Это работает и для мультисайта? Я вижу, что мультисайт имеет множество функций внутри ms-functions.php для отправки уведомлений по электронной почте.
Сисир
wpmu_signup_user_notificationЯ думаю, что Multisite использует .
Wyck
Этому ответу несколько лет. Принятый ответ не работает для меня. (Добавление его в functions.php не имеет никакого значения для любых писем, отправляемых при регистрации нового пользователя.) Должен ли я опубликовать новый вопрос?
Кит Джонсон
23

Для пользователей 2018 года и далее:

Начиная с WordPress 4.9.0, для этого можно использовать новые фильтры (больше не требуется плагин):

Пример использования по электронной почте, отправленной администратору (вы можете вставить это в functions.php вашей темы ):

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;
}
Эду Васс
источник
В качестве альтернативы можно было бы использовать wp_new_user_notification_emailи wp_new_user_notification_email_adminфильтры. Желающие могут проверить всю документацию и исходный код для wp_new_user_notification().
Пит
Спасибо, Пит, похоже, что это было введено в 4.9.0 и выглядит как лучшее решение.
Эду Васс
3

Это не будет работать на functions.php, вам нужно поместить этот код в плагин.

если вы не делаете сейчас плагин для этого просто используйте эту ссылку

не забудьте взять код обновления этой функции здесь

Эрез Либерман
источник