Кастомизация формы регистрации WordPress с помощью хуков и кода

Стандартная форма регистрации WordPress часто не удовлетворяет потребности проектов с уникальными требованиями к сбору данных пользователей. В этой статье мы подробно рассмотрим, как кастомизировать форму регистрации WordPress с помощью хуков и кода, добавлять новые поля, валидировать их и сохранять данные в пользовательские метаполя.

Почему стоит кастомизировать форму регистрации WordPress

По умолчанию WordPress предлагает минимальный набор полей: имя пользователя, email и пароль. Однако в большинстве проектов требуется собрать дополнительные данные, например, телефон, дату рождения, согласие с правилами или другую информацию.

Кастомизация формы регистрации позволит:

  • Собрать нужные данные для последующей работы с пользователями.
  • Повысить качество и полноту профилей пользователей.
  • Обеспечить валидацию и безопасность введенной информации.
  • Настроить удобный интерфейс регистрации под дизайн сайта.

Добавление новых полей в форму регистрации WordPress (action register_form)

Для добавления новых полей в форму регистрации мы используем хук register_form. Пример добавления поля "Телефон":

function wplesson_add_phone_field() {
    $phone = ( isset( $_POST['phone'] ) ) ? sanitize_text_field( $_POST['phone'] ) : '';
    echo '<p>'
       . '<label for="phone">Телефон</label><br/>'
       . '<input type="text" name="phone" id="phone" class="input" value="' . esc_attr( $phone ) . '" size="25" />'
       . '</p>';
}
add_action('register_form', 'wplesson_add_phone_field');

Этот код вставит поле "Телефон" в стандартную форму регистрации.

Валидация новых полей (filter registration_errors)

Чтобы новые поля корректно обрабатывались и валидировались, необходимо использовать фильтр registration_errors. Например, проверим, что поле "Телефон" не пустое и соответствует формату:

function wplesson_validate_phone_field( $errors, $sanitized_user_login, $user_email ) {
    if ( empty( $_POST['phone'] ) ) {
        $errors->add( 'phone_error', '<strong>Ошибка</strong>: Пожалуйста, укажите телефон.' );
    } else {
        $phone = sanitize_text_field( $_POST['phone'] );
        if ( ! preg_match( '/^\+?[0-9\s\-\(\)]+$/', $phone ) ) {
            $errors->add( 'phone_format_error', '<strong>Ошибка</strong>: Неверный формат телефона.' );
        }
    }
    return $errors;
}
add_filter( 'registration_errors', 'wplesson_validate_phone_field', 10, 3 );

Таким образом мы можем предотвратить регистрацию с некорректными данными.

Сохранение данных новых полей (action user_register)

После успешной регистрации нужно сохранить дополнительные поля в метаданные пользователя. Для этого используем хук user_register:

function wplesson_save_phone_field( $user_id ) {
    if ( ! empty( $_POST['phone'] ) ) {
        update_user_meta( $user_id, 'phone', sanitize_text_field( $_POST['phone'] ) );
    }
}
add_action( 'user_register', 'wplesson_save_phone_field' );

Теперь данные телефона будут храниться в профиле пользователя и доступны для вывода и использования в дальнейшем.

Вывод дополнительных полей в профиле пользователя (action show_user_profile и edit_user_profile)

Чтобы администраторы могли видеть и редактировать новые поля, добавим их в профиль пользователя:

function wplesson_show_phone_field( $user ) {
    ?>
    <h3>Дополнительная информация</h3>
    <table class="form-table">
        <tr>
            <th><label for="phone">Телефон</label></th>
            <td>
                <input type="text" name="phone" id="phone" value="<?php echo esc_attr( get_user_meta( $user->ID, 'phone', true ) ); ?>" class="regular-text" />
            </td>
        </tr>
    </table>
    <?php
}
add_action( 'show_user_profile', 'wplesson_show_phone_field' );
add_action( 'edit_user_profile', 'wplesson_show_phone_field' );

И сохраним изменения:

function wplesson_save_profile_phone_field( $user_id ) {
    if ( current_user_can( 'edit_user', $user_id ) ) {
        if ( isset( $_POST['phone'] ) ) {
            update_user_meta( $user_id, 'phone', sanitize_text_field( $_POST['phone'] ) );
        }
    }
}
add_action( 'personal_options_update', 'wplesson_save_profile_phone_field' );
add_action( 'edit_user_profile_update', 'wplesson_save_profile_phone_field' );

Использование плагина Clearfy для расширенной кастомизации формы регистрации

Если нужна более продвинутая кастомизация без ручного кода, рекомендуем обратить внимание на плагин Clearfy. Он позволяет:

  • Добавлять и настраивать произвольные поля регистрации и профиля.
  • Включать валидацию и маски ввода.
  • Оптимизировать и ускорять работу сайта.

Плагин значительно упрощает расширение функционала регистрации, особенно для сайтов без разработчиков.

Заключение

Кастомизация формы регистрации — важный этап доработки сайта на WordPress. Используя хуки register_form, registration_errors и user_register, вы можете расширить стандартный функционал без изменения ядра. Для упрощения задачи подойдет плагин Clearfy, который добавит удобный интерфейс настройки.

Такой подход позволит собрать необходимые данные, повысить качество пользовательских профилей и улучшить взаимодействие с аудиторией сайта.

Как сделать многоуровневую навигацию в WordPress с помощью кастомного меню и кода
24.12.2025
Автоматическое удаление старых записей в WordPress с помощью WP-Cron
01.05.2026
Как исключить конфликт AJAX при создании каскадного выбора в WooCommerce
01.05.2026
Как настроить отзывы в WordPress с помощью плагинов и кода
13.12.2025
Как отключить автозагрузку изображений в WordPress для ускорения сайта
13.04.2026