Добавление дополнительного поля в форму регистрации WordPress

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

Почему важно добавлять дополнительные поля в форму регистрации WordPress

Расширение формы регистрации позволяет получить больше информации о пользователях сразу при их создании. Это особенно полезно для сайтов с сообществом, интернет-магазинов или сервисов, где нужно сегментировать аудиторию по определённым параметрам.

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

Добавление поля в форму регистрации — подробный разбор

Для добавления дополнительного поля нужно выполнить три основных шага:

  • Вывести поле в форме регистрации.
  • Проверить и сохранить данные из поля после отправки формы.
  • Отобразить и редактировать данные в профиле пользователя в админке.

1. Вывод дополнительного поля в форме регистрации

Для вывода поля используем хук register_form. Добавим поле «Телефон» как пример:

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

Так мы добавили в форму новый текстовый инпут с именем wpsystem_phone.

2. Валидация и сохранение данных при регистрации

После отправки формы нужно проверить, что пользователь ввёл корректный телефон, и если нет, вывести ошибку. Для этого используем фильтр registration_errors. Затем сохраним данные в метаполе пользователя через хук user_register.

function wpsystem_validate_phone_field( $errors, $sanitized_user_login, $user_email ) {
    if ( empty( $_POST['wpsystem_phone'] ) || ! preg_match( '/^\+?[0-9]{7,15}$/', $_POST['wpsystem_phone'] ) ) {
        $errors->add( 'wpsystem_phone_error', 'Пожалуйста, введите корректный номер телефона.' );
    }
    return $errors;
}
add_filter( 'registration_errors', 'wpsystem_validate_phone_field', 10, 3 );

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

3. Отображение и редактирование поля в профиле пользователя

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

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

function wpsystem_save_phone_field_profile( $user_id ) {
    if ( current_user_can( 'edit_user', $user_id ) && ! empty( $_POST['wpsystem_phone'] ) ) {
        update_user_meta( $user_id, 'wpsystem_phone', sanitize_text_field( $_POST['wpsystem_phone'] ) );
    }
}
add_action( 'personal_options_update', 'wpsystem_save_phone_field_profile' );
add_action( 'edit_user_profile_update', 'wpsystem_save_phone_field_profile' );

Альтернативные решения и плагины для расширения формы регистрации

Если вы не хотите писать код самостоятельно, можно использовать плагины, которые позволяют добавлять поля в форму регистрации визуально и с расширенными возможностями:

  • Profile Builder — мощный плагин для создания кастомных форм регистрации и профилей;
  • User Registration — простой и удобный конструктор форм;
  • Expert Review — плагин с расширенными возможностями для работы с пользовательскими данными, включая кастомные поля.

В некоторых случаях стоит обратить внимание на плагины из WPSHOP, которые интегрируются с WP и позволяют упростить работу с пользователями.

Выводы и лучшие практики

Добавление дополнительных полей в форму регистрации — частая задача для кастомизации сайтов на WordPress. Главное — не забывать про валидацию данных и безопасность. Используйте префиксы в именах функций и полей, чтобы избежать конфликтов. Сохраняйте данные в метаполях пользователя, чтобы их легко было получать и изменять.

Приведённый пример с полем «Телефон» можно адаптировать под любые другие данные, изменив валидацию и тип поля. Такой подход позволяет гибко настраивать регистрацию под нужды проекта.

Как создать собственный метабокс в WordPress
05.11.2025
WooCommerce: автоматическое изменение ставки НДС для разных типов товаров
23.06.2026
Как настроить временный редирект в WordPress с помощью кода
07.01.2026
Как создать собственный объект виджета в WordPress с примерами кода
11.12.2025
WooCommerce: автоматическое обновление стоимости товара при изменении атрибутов
13.05.2026