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

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

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

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

Выбор способа: плагин или собственный код

Существует два основных способа расширить форму регистрации:

  • Использовать готовые плагины, которые позволяют добавлять поля без программирования.
  • Реализовать добавление полей самостоятельно через хуки и фильтры WordPress.

Рассмотрим оба варианта, чтобы вы могли выбрать удобный для себя.

Популярные плагины для добавления полей в регистрацию WordPress

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

  • User Registration – Custom Registration Form, Login and User Profile for WordPress — простой конструктор форм с поддержкой кастомных полей.
  • Profile Builder — мощный плагин с возможностью добавлять поля в форму регистрации и профиль пользователя.
  • RegistrationMagic — комплексное решение с гибкой настройкой форм и полей.

Все они предлагают удобный интерфейс для создания форм и сохранения дополнительных данных.

Добавление поля в форму регистрации через код: пошаговое руководство

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

Шаг 1. Добавляем поле в форму регистрации

Используем хук register_form, чтобы вывести дополнительное поле. Например, добавим поле «Номер телефона».

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

Шаг 2. Проверяем введенные данные

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

function wpsetup_validate_phone_field($errors, $sanitized_user_login, $user_email) {
    if ( empty($_POST['wpsetup_phone']) || !preg_match('/^[0-9+\-\s]+$/', $_POST['wpsetup_phone']) ) {
        $errors->add('wpsetup_phone_error', '<strong>Ошибка</strong>: Введите корректный номер телефона.');
    }
    return $errors;
}
add_filter('registration_errors', 'wpsetup_validate_phone_field', 10, 3);

Шаг 3. Сохраняем данные дополнительного поля

Используем хук user_register, чтобы сохранить номер телефона в мета-поле пользователя.

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

Шаг 4. Отображаем новое поле в профиле пользователя

Добавим поле для просмотра и редактирования номера телефона в админке.

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

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

Советы по безопасности и удобству

При добавлении полей в форму регистрации важно соблюдать несколько правил:

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

Заключение

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

Как избежать проблем с hoistingом в WordPress: практические советы
05.01.2026
WooCommerce: как исправить проблему с отображением вариаций товаров
04.05.2026
Как создать автоматическую сборку и оптимизацию изображений в WordPress
02.02.2026
Автоочистка базы данных WordPress от несуществующих записей: эффективные методы и примеры
04.03.2026
WooCommerce: как использовать хуки для изменения структуры страницы товара
29.05.2026