WP_NEW_USER_NOTIFICATION() │ WP 2.0.0
Функция wp_new_user_notification() отправляет уведомление по электронной почте администратору сайта о новой регистрации пользователя и отправляет пользователю письмо с логином и паролем.
Эта функция автоматически вызывается другой функцией wp_send_new_user_notifications(), которая подключена к хуку register_new_user в WordPress:
add_action('register_new_user', 'wp_send_new_user_notifications' );
Замечания
-
Переопределяемая функция — данную функцию можно заменить с помощью плагина. Это значит, что функция будет работать только после загрузки всех плагинов, и до этого момента она не будет определена. Поэтому вы не можете вызывать эту и все функции, зависящие от нее, напрямую из кода плагина. Их нужно вызывать на хуке plugins_loaded или позже, например, на хуке init.
-
Чтобы заменить (переопределить) функцию, вы можете создать функцию с тем же именем в вашем плагине, и она заменит оригинал.
Использует: wp_mail() (функция для отправки электронной почты)
Используется: wp_send_new_user_notifications()
Хуки из функции
- wp_send_new_user_notification_to_admin
- wp_new_user_notification_email_admin
- wp_send_new_user_notification_to_user
- wp_new_user_notification_email
Возврат
Функция ничего не возвращает (null).
Использование
wp_new_user_notification( $user_id, $deprecated, $notify );
Параметры:
- $user_id (int) (обязательный) — ID пользователя.
- $deprecated (null) — не используется (аргумент устарел).
- $notify (string) — тип уведомления, который должен произойти. Принимает значения 'admin', пустую строку (только администратор), 'user' или 'both' (администратор и пользователь).
По умолчанию: ''
Примеры
Пример 1: Уведомление администратора и пользователя
Предположим, вы хотите уведомлять себя (вы администратор) и отправить электронное письмо новому пользователю с ссылкой для установки нового пароля:
$new_user_id = 8;
wp_new_user_notification( $new_user_id, 'both' );
В результате администратор получит электронное письмо:
Новая регистрация пользователя на вашем сайте
Пример:
Имя пользователя: user
Email: user@example.com
Пользователь получит следующее сообщение:
Имя пользователя: user
Чтобы установить ваш пароль, посетите следующий адрес:
http://example.com/wp-login.php?action=rp&key=1ORsgCiUtZdwDw3tss4U&login=user
Изменения
- С 2.0.0 — Функция была введена.
- С 4.3.0 — Параметр $plaintext_pass был изменен на $notify.
- С 4.3.1 — Параметр $plaintext_pass устарел. $notify добавлен в качестве третьего параметра.
- С 4.6.0 — Параметр $notify принимает значение 'user' для отправки уведомления только созданному пользователю.
Код функции
function wp_new_user_notification( $user_id, $deprecated = null, $notify = '' ) {
if ( null !== $deprecated ) {
_deprecated_argument( __FUNCTION__, '4.3.1' );
}
if ( ! in_array( $notify, array( 'user', 'admin', 'both', '' ), true ) ) {
return;
}
$user = get_userdata( $user_id );
$blogname = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
$send_notification_to_admin = apply_filters( 'wp_send_new_user_notification_to_admin', true, $user );
if ( 'user' !== $notify && true === $send_notification_to_admin ) {
$admin_user = get_user_by( 'email', get_option( 'admin_email' ) );
if ( $admin_user ) {
$switched_locale = switch_to_user_locale( $admin_user->ID );
} else {
$switched_locale = switch_to_locale( get_locale() );
}
$message = sprintf( __( 'Новая регистрация пользователя на вашем сайте %s:' ), $blogname ) . "rnrn";
$message .= sprintf( __( 'Имя пользователя: %s' ), $user->user_login ) . "rnrn";
$message .= sprintf( __( 'Email: %s' ), $user->user_email ) . "rn";
$wp_new_user_notification_email_admin = array(
'to' => get_option( 'admin_email' ),
'subject' => __( '[%s] Новая регистрация пользователя' ),
'message' => $message,
'headers' => '',
);
wp_mail(
$wp_new_user_notification_email_admin['to'],
wp_specialchars_decode( sprintf( $wp_new_user_notification_email_admin['subject'], $blogname ) ),
$wp_new_user_notification_email_admin['message'],
$wp_new_user_notification_email_admin['headers']
);
if ( $switched_locale ) {
restore_previous_locale();
}
}
$send_notification_to_user = apply_filters( 'wp_send_new_user_notification_to_user', true, $user );
if ( 'admin' === $notify || true !== $send_notification_to_user || ( empty( $deprecated ) && empty( $notify ) ) ) {
return;
}
$key = get_password_reset_key( $user );
if ( is_wp_error( $key ) ) {
return;
}
$switched_locale = switch_to_user_locale( $user_id );
$message = sprintf( __( 'Имя пользователя: %s' ), $user->user_login ) . "rnrn";
$message .= __( 'Чтобы установить ваш пароль, посетите следующий адрес:' ) . "rnrn";
$message .= network_site_url( 'wp-login.php?login=' . rawurlencode( $user->user_login ) . "&key=$key&action=rp", 'login' ) . "rnrn";
$message .= wp_login_url() . "rn";
$wp_new_user_notification_email = array(
'to' => $user->user_email,
'subject' => __( '[%s] Данные для входа' ),
'message' => $message,
'headers' => '',
);
wp_mail(
$wp_new_user_notification_email['to'],
wp_specialchars_decode( sprintf( $wp_new_user_notification_email['subject'], $blogname ) ),
$wp_new_user_notification_email['message'],
$wp_new_user_notification_email['headers']
);
if ( $switched_locale ) {
restore_previous_locale();
}
}
Связанные функции
-
Регистрация (вход для пользователей)
register_new_user()wp_get_session_token()wp_lostpassword_url()
-
Добавление/Удаление пользователя
wp_create_user()wp_delete_user()wp_insert_user()wp_update_user()
Теперь вы знаете, как использовать функцию wp_new_user_notification(), чтобы уведомлять о новых пользователях на вашем сайте. Это важно для управления вашими пользователями и обеспечения безопасности вашего сайта.