Функция wp_new_user_notification()
в WordPress отвечает за отправку уведомлений о регистрации новых пользователей. Она автоматически отправляет уведомления как администратору сайта, так и самому новому пользователю. В этой статье мы рассмотрим параметры функции, ее работу и примеры использования.
wp_new_user_notification( int $user_id, null $deprecated = null, string $notify = '' )
Параметры
$user_id
(int): Обязательный параметр, который указывает ID пользователя.$deprecated
(null): Необязательный параметр. Устарел и не используется с версии 4.3.1. По умолчанию:null
.$notify
(string): Необязательный параметр, определяющий тип уведомления. Возможные значения:'admin'
или''
(пустая строка) — уведомление получит только администратор.'user'
— уведомление получит только созданный пользователь.'both'
— уведомления получат и администратор, и созданный пользователь.- По умолчанию:
''
.
Примечания
Функция может быть переопределена плагинами. Если плагины не переопределяют эту функцию, то используется стандартная версия.
Пример переопределения уведомления о регистрации
Вы можете изменить текст уведомлений, используя фильтр wp_new_user_notification_email
. В этом примере мы создадим кастомное уведомление для новорегистриравшегося пользователя:
/**
* Кастомное уведомление о регистрации пользователя
*/
add_filter('wp_new_user_notification_email', 'custom_wp_new_user_notification_email', 10, 3);
function custom_wp_new_user_notification_email($wp_new_user_notification_email, $user, $blogname) {
$user_login = stripslashes($user->user_login);
$user_email = stripslashes($user->user_email);
$login_url = wp_login_url();
$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 .= $login_url . "\r\n";
$message .= sprintf(__('Username: %s'), $user_login) . "\r\n";
$message .= sprintf(__('Email: %s'), $user_email) . "\r\n";
$message .= __('Password: The one you entered in the registration form. (For security reasons, we save encrypted password)') . "\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 .= __('Bye!');
$wp_new_user_notification_email['subject'] = sprintf('[%s] Your credentials.', $blogname);
$wp_new_user_notification_email['headers'] = array('Content-Type: text/html; charset=UTF-8');
$wp_new_user_notification_email['message'] = $message;
return $wp_new_user_notification_email;
}
Порядок вызова функции
Функция wp_new_user_notification()
автоматически срабатывает при вызове хука register_new_user
, который подключен к функции wp_send_new_user_notifications()
.
add_action('register_new_user', 'wp_send_new_user_notifications');
Переопределение функции
Если вы хотите переопределить функцию wp_new_user_notification()
, вам нужно сделать это в файле вашего плагина или в mu-plugin
. Вот пример переопределения функции:
// Переопределение функции уведомления о новом пользователе
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";
$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);
}
}
Уведомление администратора и нового пользователя о регистрации
Допустим, при регистрации пользователя необходимо уведомить администратора и отправить письмо новому пользователю на почту со ссылкой на установку нового пароля:
$new_user_id = 5;
wp_new_user_notification($new_user_id, 'both');
Заключение
Функция wp_new_user_notification()
является важным инструментом для управления уведомлениями о регистрации пользователей в WordPress. С помощью её гибкости и возможности кастомизации вы можете легко адаптировать уведомления под свои нужды.