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

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

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

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

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

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

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

Пример добавления поля «Телефон»:

function wpkit_add_phone_field() {
    // Получаем старое значение поля, если была ошибка при регистрации
    $phone = isset( $_POST['wpkit_phone'] ) ? esc_attr( $_POST['wpkit_phone'] ) : '';
    echo '<p>
        <label for="wpkit_phone">Телефон (обязательно)</label><br/>
        <input type="text" name="wpkit_phone" id="wpkit_phone" class="input" value="' . $phone . '" size="25" />
    </p>';
}
add_action( 'register_form', 'wpkit_add_phone_field' );

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

Валидация дополнительного поля при регистрации (hook registration_errors)

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

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

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

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

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

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

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

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

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

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

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

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

Рекомендации по безопасности и совместимости

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

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

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

Заключение

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

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

Как отключить Gutenberg и оставить классический редактор в WordPress
25.02.2026
WooCommerce: как заблокировать оплату при наличии товаров с определёнными атрибутами в корзине
23.07.2026
Автоматизация обновлений WordPress: настройка и контроль
10.11.2025
Как создать свой шорткод для WordPress
27.11.2025
Оптимизация базы данных WordPress без повышения нагрузки на сервер
11.12.2025