В WordPress стандартный процесс регистрации пользователя достаточно прост и ограничен базовыми полями. Однако часто возникает необходимость расширить или изменить процесс регистрации: добавить новые поля, настроить проверки, отправлять дополнительные уведомления и даже интегрировать с внешними сервисами. В этой статье подробно разберем, как обновить регистрацию пользователя в WordPress, используя хуки и плагины, а также приведем примеры кода для практического применения.
Почему нужно обновлять процесс регистрации пользователей в WordPress
Базовая форма регистрации WordPress содержит минимальный набор полей (логин, email, пароль). Но в реальных проектах часто необходимо:
- Собирать дополнительную информацию: телефон, адрес, дата рождения и т.д.
- Проводить валидацию вводимых данных по своим правилам.
- Интегрировать с CRM или другими внешними сервисами.
- Автоматически присваивать роли, отправлять персонализированные письма.
- Добавлять капчу и другие средства защиты от спама.
Все это можно реализовать через хуки WordPress и с помощью специализированных плагинов, что позволит сделать процесс регистрации удобным и безопасным.
Использование хуков WordPress для расширения регистрации
Добавление новых полей регистрации
Для добавления новых полей на страницу регистрации используйте хук register_form. Пример кода для добавления поля «Телефон»:
function wp_kurs_add_phone_field() {
$phone = ( isset( $_POST['phone'] ) ) ? sanitize_text_field( $_POST['phone'] ) : '';
echo '<p>\n<label for="phone">Телефон <br /></label>\n';
echo '<input type="text" name="phone" id="phone" class="input" value="' . esc_attr( $phone ) . '" size="25" />\n</p>';
}
add_action( 'register_form', 'wp_kurs_add_phone_field' );Этот код добавит текстовое поле «Телефон» на стандартную страницу регистрации.
Валидация новых полей
Чтобы проверить корректность введенных данных, надо использовать фильтр registration_errors. Например, проверим, что телефон введен и соответствует формату:
function wp_kurs_validate_phone_field( $errors, $sanitized_user_login, $user_email ) {
if ( empty( $_POST['phone'] ) ) {
$errors->add( 'phone_error', '<strong>Ошибка</strong>: Пожалуйста, введите телефон.' );
} elseif ( ! preg_match( '/^\+?[0-9]{10,15}$/', $_POST['phone'] ) ) {
$errors->add( 'phone_error', '<strong>Ошибка</strong>: Неверный формат телефона.' );
}
return $errors;
}
add_filter( 'registration_errors', 'wp_kurs_validate_phone_field', 10, 3 );Так мы контролируем обязательность и формат номера телефона.
Сохранение дополнительных полей в метаданные пользователя
После успешной регистрации нужно сохранить новые данные в профиль пользователя, используя хук user_register. Пример:
function wp_kurs_save_phone_field( $user_id ) {
if ( ! empty( $_POST['phone'] ) ) {
update_user_meta( $user_id, 'phone', sanitize_text_field( $_POST['phone'] ) );
}
}
add_action( 'user_register', 'wp_kurs_save_phone_field' );Теперь данные телефона сохраняются и доступны в профиле пользователя.
Расширение регистрации с помощью плагинов
Плагин User Registration
Один из популярных плагинов для создания расширенных форм регистрации — User Registration. Он позволяет строить формы с любым набором полей через drag-and-drop интерфейс, добавлять валидацию, интегрировать с почтовыми сервисами и многое другое.
Основные возможности:
- Добавление произвольных полей (текст, email, телефон, выбор и пр.)
- Настройка правил валидации и обязательных полей
- Поддержка капчи для защиты от спама
- Перенаправление после регистрации на нужную страницу
- Интеграция с WooCommerce и другими плагинами
Плагин Clearfy для оптимизации регистрации
Clearfy Pro — универсальный плагин для оптимизации и безопасности, который позволяет отключить стандартные функции регистрации, добавить капчу и защиту от ботов, а также настроить редиректы.
Он идеально подходит для тех, кто хочет не только расширить регистрацию, но и повысить безопасность сайта.
Пример комплексного решения: добавляем телефон, проверяем и отправляем письмо
Объединим все шаги в одном примере. Допустим, нужно собрать телефон, проверить его, сохранить и отправить администратору уведомление после регистрации.
function wp_kurs_add_phone_field() {
$phone = ( isset( $_POST['phone'] ) ) ? sanitize_text_field( $_POST['phone'] ) : '';
echo '<p>\n<label for="phone">Телефон <br /></label>\n';
echo '<input type="text" name="phone" id="phone" class="input" value="' . esc_attr( $phone ) . '" size="25" />\n</p>';
}
add_action( 'register_form', 'wp_kurs_add_phone_field' );
function wp_kurs_validate_phone_field( $errors, $sanitized_user_login, $user_email ) {
if ( empty( $_POST['phone'] ) ) {
$errors->add( 'phone_error', '<strong>Ошибка</strong>: Пожалуйста, введите телефон.' );
} elseif ( ! preg_match( '/^\+?[0-9]{10,15}$/', $_POST['phone'] ) ) {
$errors->add( 'phone_error', '<strong>Ошибка</strong>: Неверный формат телефона.' );
}
return $errors;
}
add_filter( 'registration_errors', 'wp_kurs_validate_phone_field', 10, 3 );
function wp_kurs_save_phone_and_notify( $user_id ) {
if ( ! empty( $_POST['phone'] ) ) {
update_user_meta( $user_id, 'phone', sanitize_text_field( $_POST['phone'] ) );
$user_info = get_userdata( $user_id );
$to = get_option( 'admin_email' );
$subject = 'Новая регистрация пользователя на сайте';
$message = "Зарегистрировался новый пользователь:\n";
$message .= "Логин: " . $user_info->user_login . "\n";
$message .= "Email: " . $user_info->user_email . "\n";
$message .= "Телефон: " . sanitize_text_field( $_POST['phone'] ) . "\n";
wp_mail( $to, $subject, $message );
}
}
add_action( 'user_register', 'wp_kurs_save_phone_and_notify' );Этот код добавляет телефонное поле, проверяет его корректность, сохраняет в метаданные и отправляет администратору письмо с информацией о новом пользователе.
Выводы и рекомендации
Обновление процесса регистрации в WordPress — важный шаг для создания удобного и функционального сайта. Использование хуков даёт гибкость и позволяет интегрировать любые кастомизации. А плагины, такие как User Registration и Clearfy Pro, ускоряют разработку и добавляют готовые решения безопасности и оптимизации.
Если хотите быстро расширить регистрацию без кода — начните с плагина User Registration: https://wpshop.ru/plugins/user-registration/
Для более глубокой оптимизации безопасности используйте Clearfy Pro: https://wpshop.ru/plugins/clearfy-pro/