wp-kurs.ru wordpress WP-Kurs

Как обновить регистрацию пользователя в WordPress с помощью хуков и плагинов

В 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/

×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙