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

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

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

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

Добавление пользовательских полей в форму регистрации WordPress

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

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

Этот код добавит поле "Телефон" в форму регистрации и при ошибке заполнения сохранит введённое значение.

Валидация пользовательских полей при регистрации

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

add_filter('registration_errors', 'wp3_validate_phone_field', 10, 3);
function wp3_validate_phone_field( $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;
}

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

Сохранение дополнительных полей в профиль пользователя

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

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

Данные сохраняются в мета-поле пользователя с ключом phone. Если нужно, можно сохранить в отдельную таблицу, но для большинства задач мета-поля подходят идеально.

Отображение дополнительных полей в профиле пользователя в админке

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

add_action('show_user_profile', 'wp3_show_phone_field');
add_action('edit_user_profile', 'wp3_show_phone_field');
function wp3_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('personal_options_update', 'wp3_save_phone_field_admin');
add_action('edit_user_profile_update', 'wp3_save_phone_field_admin');
function wp3_save_phone_field_admin( $user_id ) {
    if ( ! current_user_can( 'edit_user', $user_id ) ) {
        return false;
    }
    if ( isset( \$_POST['phone'] ) ) {
        update_user_meta( $user_id, 'phone', sanitize_text_field( \$_POST['phone'] ) );
    }
}

Так админ может видеть и менять номер телефона пользователя.

Примеры полезных плагинов для расширения формы регистрации

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

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

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

Расширение: как добавить checkbox "Согласен с правилами" в форму регистрации

Пример простого чекбокса с обязательным подтверждением:

add_action('register_form', 'wp3_add_terms_checkbox');
function wp3_add_terms_checkbox() {
    $checked = ( isset( \$_POST['terms'] ) ) ? 'checked' : '';
    echo '<p>'
        . '<label for="terms">'
        . '<input type="checkbox" name="terms" id="terms" '. $checked .' />'
        . ' Я согласен с <a href="/terms" target="_blank">правилами</a> сайта <span class="required">*</span>'
        . '</label>'
        . '</p>';
}

add_filter('registration_errors', 'wp3_validate_terms_checkbox', 10, 3);
function wp3_validate_terms_checkbox( $errors, $sanitized_user_login, $user_email ) {
    if ( ! isset( \$_POST['terms'] ) ) {
        $errors->add( 'terms_error', '<strong>Ошибка</strong>: необходимо согласиться с правилами.' );
    }
    return $errors;
}

Так вы обезопасите себя от регистраций без согласия с условиями.

Вывод дополнительных данных на фронтенде и в профиле пользователя

Чтобы отобразить дополнительные поля на странице профиля или в шаблоне, используйте функцию:

function wp3_show_user_phone( $user_id ) {
    $phone = get_user_meta( $user_id, 'phone', true );
    if ( $phone ) {
        echo '<p><strong>Телефон:</strong> ' . esc_html( $phone ) . '</p>';
    }
}

Пример использования — вызов wp3_show_user_phone(get_current_user_id()) в шаблоне.

Заключение

Добавление пользовательских полей в форму регистрации — задача, часто возникающая при создании сайтов на WordPress. С помощью хуков register_form, registration_errors и user_register можно добавить поля, проверить их и сохранить данные без плагинов. Если нужна гибкость и удобство, рекомендуем обратить внимание на плагины User Registration, Profile Builder или Clearfy Pro.

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

Как удалить или скрыть URL страниц в WordPress: практические решения
26.03.2026
Как отменить отправку писем с WordPress: практическое руководство
12.01.2026
Как автоматизировать удаление старых чрезвычайных постов в WordPress
06.04.2026
Как отладить проблемы с кешем в WordPress: практические советы и примеры кода
12.11.2025
Как автоматизировать обновление технических страниц WordPress с примерами кода
26.12.2025