В стандартной установке WordPress процесс регистрации пользователей очень простой и ограниченный по возможностям. Часто разработчикам и владельцам сайтов требуется изменить логику регистрации: добавить дополнительные поля, включить валидацию, отправить уведомления или даже интегрировать регистрацию с внешними сервисами. В этой статье мы разберем, как изменить регистрацию пользователей WordPress через функции, используя хуки, фильтры и примеры кода.
Почему стоит кастомизировать регистрацию пользователей в WordPress
Стандартный процесс регистрации предоставляет только базовые поля — имя пользователя и e-mail. Это не всегда удобно, если нужно собрать больше информации, например, телефон, дату рождения или согласие с политикой конфиденциальности. Кроме того, часто возникает необходимость внедрить дополнительную валидацию данных, защиту от спама или интеграцию с CRM.
Кастомизация регистрации позволяет:
- Добавить дополнительные поля для сбора нужной информации;
- Проверить валидность и корректность введенных данных;
- Изменить внешний вид и поведение формы регистрации;
- Автоматизировать отправку уведомлений и письма с подтверждением;
- Интегрировать регистрацию с другими системами и плагинами.
Для реализации этих задач можно использовать как плагины, так и собственные функции в файле functions.php темы или в отдельном плагине.
Добавление дополнительных полей в форму регистрации WordPress
Давайте рассмотрим пример, как с помощью хуков добавить поле "Телефон" в стандартную форму регистрации.
Вывод дополнительного поля на форму регистрации
Для начала с помощью хука register_form добавим HTML-код поля:
function wpeasy_add_phone_field() {
$phone = ( isset( $_POST['phone'] ) ) ? esc_attr( $_POST['phone'] ) : '';
echo '<p><label for="phone">Телефон <br /><input type="text" name="phone" id="phone" class="input" value="'. $phone .'" size="25" /></label></p>';
}
add_action('register_form', 'wpeasy_add_phone_field');Эта функция добавит текстовое поле для телефона в форму регистрации.
Валидация дополнительного поля
Чтобы при регистрации проверять корректность введенного телефона, используем фильтр registration_errors:
function wpeasy_validate_phone_field( $errors, $sanitized_user_login, $user_email ) {
if ( empty( $_POST['phone'] ) || ! preg_match( '/^\+?\d{10,15}$/', $_POST['phone'] ) ) {
$errors->add( 'phone_error', '<strong>Ошибка</strong>: Пожалуйста, введите корректный номер телефона.' );
}
return $errors;
}
add_filter('registration_errors', 'wpeasy_validate_phone_field', 10, 3);Здесь мы проверяем, что поле не пустое и соответствует простому регулярному выражению для номера телефона.
Сохранение дополнительного поля в метаданных пользователя
После успешной регистрации нужно сохранить номер телефона в пользовательские мета-данные. Для этого используем действие user_register:
function wpeasy_save_phone_field( $user_id ) {
if ( ! empty( $_POST['phone'] ) ) {
update_user_meta( $user_id, 'phone', sanitize_text_field( $_POST['phone'] ) );
}
}
add_action('user_register', 'wpeasy_save_phone_field');Теперь номер телефона сохранится и будет доступен для дальнейшего использования, например, в профиле пользователя.
Использование плагинов для расширения регистрации
Если вы не хотите писать код вручную, можно воспользоваться готовыми плагинами, которые позволяют гибко настраивать форму регистрации:
- Profile Builder — позволяет добавлять поля, редактировать формы и управлять регистрацией без кода;
- WP User Manager — мощный инструмент для создания кастомных форм регистрации и профилей;
- User Registration — простой конструктор форм с возможностью добавлять поля и настраивать уведомления.
Эти плагины поддерживают множество типов полей, логику отображения и интеграцию с почтовыми сервисами и CRM.
Пример кастомной функции отправки письма после регистрации
Иногда требуется отправить кастомное письмо после успешной регистрации пользователя. Для этого используйте следующий код:
function wpeasy_send_welcome_email( $user_id ) {
$user_info = get_userdata( $user_id );
$to = $user_info->user_email;
$subject = 'Добро пожаловать на наш сайт!';
$message = 'Здравствуйте, ' . $user_info->first_name . '! Спасибо за регистрацию на нашем сайте.';
wp_mail( $to, $subject, $message );
}
add_action( 'user_register', 'wpeasy_send_welcome_email' );Этот код автоматически отправит приветственное письмо новому пользователю.
Заключение: рекомендации по безопасности и удобству
При кастомизации регистрации важно не забывать про безопасность:
- Всегда фильтруйте и проверяйте вводимые данные, чтобы избежать XSS и SQL-инъекций;
- Используйте nonce-поля для защиты от CSRF;
- Активируйте защиту от спама, например, с помощью reCAPTCHA или Honeypot;
- Обеспечьте понятные сообщения об ошибках и удобный интерфейс для пользователей.
Сочетание правильного кода и проверенных плагинов поможет сделать регистрацию на вашем сайте удобной и безопасной.