wpedu.ru wordpress WP Education

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

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

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

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

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

Примеры полезных дополнительных полей

  • Телефон
  • Дата рождения
  • Компания или должность
  • Согласие с политикой конфиденциальности
  • Промокод или реферальный код

Добавление полей в форму регистрации через functions.php

Самый гибкий способ — добавить поля программно через файл темы functions.php. Рассмотрим пример, как добавить поле "Номер телефона" в форму регистрации, проверить его заполнение и сохранить в метаданные пользователя.

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

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

Этот код добавляет текстовое поле с id и именем phone непосредственно в форму регистрации.

Шаг 2. Валидация поля

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

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

Здесь мы проверяем, что поле не пустое и соответствует простому регулярному выражению для номера телефона.

Шаг 3. Сохранение данных

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

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

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

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

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

function wpedu_show_phone_in_profile( $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( 'show_user_profile', 'wpedu_show_phone_in_profile' );
add_action( 'edit_user_profile', 'wpedu_show_phone_in_profile' );

Сохранение поля при редактировании профиля

function wpedu_save_phone_in_profile( $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'] ) );
    }
}
add_action( 'personal_options_update', 'wpedu_save_phone_in_profile' );
add_action( 'edit_user_profile_update', 'wpedu_save_phone_in_profile' );

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

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

1. User Registration — Custom Registration Form, Login and User Profile for WordPress

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

2. Profile Builder

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

3. RegistrationMagic

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

При использовании плагинов обычно не требуется писать код, но иногда стоит добавить PHP-фильтры для тонкой настройки.

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

Добавляя дополнительные поля, не забывайте:

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

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

×

Увеличьте продажи!

Скидка на
My Popup!

-15%
плагин для WordPress

Успей купить ⋙