Хук user_register
в WordPress позволяет выполнить действия сразу после регистрации нового пользователя. Этот хук часто используют для добавления или изменения метаданных, отправки уведомлений или выполнения других задач, связанных с регистрацией. В статье мы рассмотрим параметры хука и приведем несколько уникальных примеров его использования.
do_action( 'user_register', int $user_id, array $userdata );
Параметры
$user_id
(int): ID нового зарегистрированного пользователя.$userdata
(array): Массив данных, переданный вwp_insert_user()
.
Особенности
Этот хук срабатывает после добавления данных пользователя в базу, но не все метаданные могут быть добавлены на этот момент. Например, имя и фамилия пользователя еще могут отсутствовать. Пароль пользователя уже зашифрован.
Пример 1: Добавление пользовательского поля «город» при регистрации
Этот пример показывает, как добавить пользовательское поле city
при регистрации. Допустим, поле city
передается в $_POST
из формы регистрации.
// Предварительная проверка поля city
add_filter( 'registration_errors', 'validate_user_city' );
function validate_user_city( $errors ) {
if ( empty( $_POST['city'] ) ) {
$errors->add( 'empty_city', 'Пожалуйста, укажите город.' );
}
return $errors;
}
// Обновление метаданных пользователя после регистрации
add_action( 'user_register', 'add_user_city_meta' );
function add_user_city_meta( $user_id ) {
if ( ! empty( $_POST['city'] ) ) {
update_user_meta( $user_id, 'city', sanitize_text_field( $_POST['city'] ) );
}
}
Пример 2: Отправка приветственного письма с информацией о регистрации
Этот код отправляет приветственное письмо новому пользователю после регистрации. В письме содержатся данные о его логине и рекомендация для начала работы.
add_action( 'user_register', 'send_welcome_email' );
function send_welcome_email( $user_id ) {
$user_info = get_userdata( $user_id );
$email = $user_info->user_email;
$login = $user_info->user_login;
$subject = 'Добро пожаловать на наш сайт!';
$message = "Здравствуйте, $login!\n\nСпасибо за регистрацию на нашем сайте. Мы рады приветствовать вас! Для начала работы рекомендуем ознакомиться с нашими рекомендациями.";
wp_mail( $email, $subject, $message );
}
Пример 3: Установка роли «Премиум-пользователь» для новых пользователей
Этот пример добавляет роль «Премиум-пользователь» для всех новых пользователей, чтобы предоставить доступ к эксклюзивному контенту.
add_action( 'user_register', 'assign_premium_role' );
function assign_premium_role( $user_id ) {
$user = new WP_User( $user_id );
$user->add_role( 'premium_user' );
}
Пример 4: Логирование данных нового пользователя
Для аналитики или мониторинга вы можете сохранять данные каждого нового пользователя в файл логов. В этом примере данные регистрации записываются в лог-файл user_registration.log
.
add_action( 'user_register', 'log_user_registration' );
function log_user_registration( $user_id ) {
$user_info = get_userdata( $user_id );
$log_entry = "Новый пользователь зарегистрирован: \n";
$log_entry .= "ID: $user_id\n";
$log_entry .= "Имя пользователя: " . $user_info->user_login . "\n";
$log_entry .= "Email: " . $user_info->user_email . "\n\n";
file_put_contents( WP_CONTENT_DIR . '/user_registration.log', $log_entry, FILE_APPEND );
}
Пример 5: Добавление метаданных о предпочтениях пользователя
Допустим, у вас есть форма регистрации с пользовательским полем для выбора темы (например, «Темная» или «Светлая»). Этот пример сохраняет выбранную тему в метаданные пользователя.
// Валидация поля темы
add_filter( 'registration_errors', 'validate_user_theme' );
function validate_user_theme( $errors ) {
if ( empty( $_POST['theme_preference'] ) ) {
$errors->add( 'empty_theme_preference', 'Пожалуйста, выберите тему оформления.' );
}
return $errors;
}
// Сохранение метаданных о предпочтениях темы
add_action( 'user_register', 'save_user_theme_preference' );
function save_user_theme_preference( $user_id ) {
if ( ! empty( $_POST['theme_preference'] ) ) {
update_user_meta( $user_id, 'theme_preference', sanitize_text_field( $_POST['theme_preference'] ) );
}
}
Пример 6: Назначение индивидуальных приветственных бонусов
Предположим, что на вашем сайте предусмотрена система бонусов. В этом примере каждому новому пользователю при регистрации добавляется начальный бонус в его метаданные.
add_action( 'user_register', 'assign_welcome_bonus' );
function assign_welcome_bonus( $user_id ) {
update_user_meta( $user_id, 'welcome_bonus', 100 ); // Назначаем 100 бонусных баллов
}
Заключение
Хук user_register
— это мощный инструмент для настройки процесса регистрации в WordPress, позволяющий добавлять метаданные, отправлять уведомления или назначать роли и бонусы новым пользователям.