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

10

Когда я добавляю нового клиента, электронное письмо отправляется новому пользователю в следующем формате:

From: WordPress [wordpress@siteurl.com]
Subject: [site name] Your user name and password
Message:
         username: user
         Password: password
         siteurl.com/wp-login.php

Теперь я хочу изменить этот формат:

From: My Site Name [info@siteurl.com]
Subject: siteurl.com customer account activated
Message:
       Your customer account has been activated.

       Your Login credentials are:

       Username: user email
       Password: password

       Thanks,
       abcd

Я попробовал этот ответ, но он не работает.

Как я могу это сделать?

deemi D-Nadeem
источник

Ответы:

17

Для пользователей 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;
}
Эду Васс
источник
7

Новое электронное уведомление пользователя создается и отправляется функцией wp_new_user_notification(), найденной в wp-includes / plugable.php

В этой функции нет ловушки фильтра, которая позволила бы вам манипулировать выводом электронного письма, однако вы, конечно, можете перезаписать любую подключаемую функцию через плагин.

Примечание. Вы можете перезаписывать подключаемые функции только внутри плагина, но не внутри своей темы.

Смотрите здесь для получения дополнительной информации о подключаемых функциях и полный список доступных функций - http://codex.wordpress.org/Pluggable_Functions

Этот код создаст плагин, который будет использоваться вместо того, который используется в wp-includes / plugable.php (сохраните его в своем собственном файле в wp-content / plugins / ).

Я не настроил это для вас, но это должно помочь вам.

<?php
/**
 * Plugin Name: Custom new user notification email
 * Description: Overwrites the pluggable 'wp_new_user_notification()' plugin to allow the sending of a custom email
 * Author: David Gard
 * Version: 1.0
 */

if ( !function_exists('wp_new_user_notification') ) :
/**
 * Pluggable - Email login credentials to a newly-registered user
 *
 * A new user registration notification is also sent to admin email.
 *
 * @since 2.0.0
 *
 * @param int    $user_id        User ID.
 * @param string $plaintext_pass Optional. The user's plaintext password. Default empty.
 */
function wp_new_user_notification($user_id, $plaintext_pass = ''){

    $user = get_userdata($user_id);

    // The blogname option is escaped with esc_html on the way into the database in sanitize_option
    // we want to reverse this for the plain text arena of emails.
    $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);

    $message  = sprintf(__('New user registration on your site %s:'), $blogname) . "\r\n\r\n";
    $message .= sprintf(__('Username: %s'), $user->user_login) . "\r\n\r\n";
    $message .= sprintf(__('E-mail: %s'), $user->user_email) . "\r\n";

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

    if ( empty($plaintext_pass) )
        return;

    $message  = sprintf(__('Username: %s'), $user->user_login) . "\r\n";
    $message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n";
    $message .= wp_login_url() . "\r\n";

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

}
endif;
Дэвид Гард
источник
1

Если вы имеете в виду многосайтовую настройку, это настраивается с помощью шаблона, который настроен в базе данных в 2 разделах:

Приветственное письмо

и

Приветственный адрес электронной почты

Http: //yoursite/wp-admin/network/settings.php

Вы можете настроить его по своему вкусу.

Ричард Динь
источник