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

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

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

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

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

Плагин User Registration

Один из самых популярных и удобных плагинов — User Registration. Он позволяет создавать собственные формы регистрации с неограниченным количеством полей, поддерживает drag & drop конструктор и встроенную валидацию.

Пример добавления текстового поля «Номер телефона» в конструкторе:

  • Открываете настройки плагина
  • Добавляете новое поле с типом «текст»
  • Задаёте метку и атрибуты (обязательное, формат)
  • Сохраняете форму и размещаете шорткод в нужном месте сайта

Этот плагин автоматически сохраняет данные в мета-поле пользователя и выводит их в админке.

Плагин Profile Builder

Profile Builder — ещё один мощный инструмент для кастомизации форм регистрации и профиля. Он позволяет создавать условные поля, интегрируется с WooCommerce и поддерживает SMTP для отправки уведомлений.

Для добавления поля используйте интерфейс плагина или добавляйте свои поля через фильтры. Например, чтобы добавить поле «Компания» на форму регистрации, можно воспользоваться их документацией.

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

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

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

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

Валидация введённых данных

Чтобы проверять поле и не допускать пустые или некорректные значения, используйте хук registration_errors:

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

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

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

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

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

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

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

Для сохранения обновлений добавьте:

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

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

При добавлении полей важно соблюдать безопасность:

  • Всегда фильтруйте и валидируйте данные, чтобы избежать XSS и SQL-инъекций.
  • Используйте nonce-поля для проверки легитимности запросов, если добавляете поля в формы вне стандартного процесса регистрации.
  • Делайте поля необязательными, если не хотите усложнять регистрацию, или явно указывайте обязательность.

Для улучшения UX стоит использовать маски ввода и подсказки, чтобы пользователь понимал, как правильно заполнить поле.

Заключение

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

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

Как удалить или заблокировать IP-адреса в WordPress: практическое руководство
05.04.2026
Как удалить ревизии постов в WordPress для очистки базы данных
11.12.2025
Автоматическое отменение неоплаченных заказов в WooCommerce
03.05.2026
Как создать собственный виджет WordPress своими руками
20.11.2025
WordPress: как создать страницу настроек в плагине с использованием Settings API
26.12.2025