Как изменить и добавить новые поля в регистрации WordPress

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

Почему стоит менять стандартную форму регистрации WordPress

Стандартная регистрация очень простая и подходит далеко не для всех проектов. Например, интернет-магазинам, сообществам или образовательным платформам часто требуется указать дополнительные сведения — номер телефона, дату рождения, город, роль пользователя и т.п.

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

  • Собрать больше данных о пользователях для дальнейшей работы.
  • Настроить процесс регистрации под свои бизнес-задачи.
  • Улучшить взаимодействие с пользователем, задавая релевантные вопросы.
  • Расширить профили пользователей и использовать эти данные в дальнейшем — для рассылок, фильтрации, персонализации.

Однако важно делать это грамотно и безопасно, чтобы не сломать логику WordPress и не создать уязвимости.

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

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

Пример кода из файла functions.php вашей темы или собственного плагина:

function wpconfig_add_custom_register_fields() {
    ?>
    <p>
        <label for="phone">Телефон</label><br/>
        <input type="text" name="phone" id="phone" class="input" value="<?php echo esc_attr( wpconfig_get_post_value('phone') ); ?>" size="25" />
    </p>
    <?php
}
add_action('register_form', 'wpconfig_add_custom_register_fields');

Здесь мы добавляем поле "Телефон" с сохранением введенного значения, если регистрация не прошла и форма обновилась с ошибками.

Функция для безопасного получения значения из POST

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

function wpconfig_get_post_value($key) {
    return isset($_POST[$key]) ? sanitize_text_field($_POST[$key]) : '';
}

Как валидировать и проверять значения новых полей при регистрации

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

Пример валидации для поля телефона:

function wpconfig_validate_custom_register_fields($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', 'wpconfig_validate_custom_register_fields', 10, 3);

Здесь мы проверяем, что поле не пустое и соответствует шаблону номера телефона — от 10 до 15 цифр с опциональным плюсом в начале.

Как сохранить новые поля в профиле пользователя

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

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

Теперь номер телефона будет храниться как пользовательское мета-значение с ключом phone.

Как отобразить новые поля в профиле пользователя в админке

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

function wpconfig_show_extra_profile_fields($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', 'wpconfig_show_extra_profile_fields');
add_action('edit_user_profile', 'wpconfig_show_extra_profile_fields');

И добавим сохранение при редактировании профиля:

function wpconfig_save_extra_profile_fields($user_id) {
    if (!current_user_can('edit_user', $user_id)) {
        return false;
    }
    if (!empty($_POST['phone'])) {
        update_user_meta($user_id, 'phone', sanitize_text_field($_POST['phone']));
    } else {
        delete_user_meta($user_id, 'phone');
    }
}
add_action('personal_options_update', 'wpconfig_save_extra_profile_fields');
add_action('edit_user_profile_update', 'wpconfig_save_extra_profile_fields');

Плагины для расширения формы регистрации WordPress

Если кодить не хочется, можно использовать готовые решения. Вот несколько популярных плагинов:

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

Эти плагины позволяют не только добавлять поля, но и настраивать логику регистрации без программирования.

Советы по безопасности при изменении формы регистрации

При добавлении новых полей убедитесь, что вы:

  • Используете sanitize_text_field и другие функции очистки для данных.
  • Проверяете формат и обязательность полей.
  • Не позволяете сохранять вредоносный код.
  • Используете nonce-поля, если делаете AJAX-формы.
  • Внимательно тестируете все сценарии регистрации и редактирования профиля.

Это поможет избежать уязвимостей и сохранить стабильность работы сайта.

Итоги

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

В статье приведены базовые примеры, которые можно адаптировать под свои задачи и развивать дальше, например, добавлять интеграцию с CRM, отправку уведомлений или автоматическую проверку данных.

Выполнение динамических запросов в wpdb WordPress: практические примеры и безопасность
02.02.2026
Как создать собственный REST API endpoint в WordPress: подробное руководство
08.11.2025
Как автоматизировать очистку неиспользуемых переходных в WordPress
05.02.2026
Как отключить Gutenberg только для определённых типов записей в WordPress
06.12.2025
Как добавить многоязычность в WordPress без плагинов: пошаговое руководство
14.11.2025