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

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

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

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

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

Основные шаги для добавления поля в форму регистрации

Добавление пользовательского поля состоит из трёх этапов:

  • Вывод поля в форму регистрации;
  • Валидация и сохранение данных при регистрации;
  • Отображение и редактирование поля в профиле пользователя.

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

1. Вывод дополнительного поля в форму регистрации

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

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

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

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

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

В данном примере проверяем, что номер телефона содержит от 10 до 15 цифр и может начинаться с +.

3. Сохранение данных при регистрации

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

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

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

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

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

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

Сохраняем изменения из профиля

function wpbook_save_phone_profile_field( $user_id ) {
    if ( ! current_user_can( 'edit_user', $user_id ) ) {
        return false;
    }
    if ( isset( $_POST['wpbook_phone'] ) ) {
        update_user_meta( $user_id, 'wpbook_phone', sanitize_text_field( $_POST['wpbook_phone'] ) );
    }
}
add_action( 'personal_options_update', 'wpbook_save_phone_profile_field' );
add_action( 'edit_user_profile_update', 'wpbook_save_phone_profile_field' );

Дополнительные рекомендации и примеры плагинов

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

Также полезен плагин WPRemark для расширения профилей пользователей.

Вывод

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как сделать автоматический rollback обновлений WordPress при ошибках
25.03.2026
Как автоматически отключать плагины в WordPress по расписанию
12.03.2026
Как создать динамические шаблоны в WordPress с помощью WPBook
12.01.2026
Как использовать хук в WordPress для динамического изменения meta title
14.02.2026
Автоматическое отключение неиспользуемых плагинов в WordPress: практическое решение
02.03.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее