wpquiz.ru wordpress WPQuiz.ru

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

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

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

Часто стандартных полей регистрации недостаточно для полноценного взаимодействия с пользователями. Кастомные поля позволяют:

  • Собирать дополнительную информацию для персонализации
  • Использовать данные для маркетинга и аналитики
  • Добавлять пользовательские роли и права на основе введенных данных

Но важно делать это правильно, чтобы не нарушать безопасность сайта и не ухудшать UX.

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

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

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

Этот код добавит новое текстовое поле в форму регистрации. Обратите внимание на префикс wpquiz_ в названии поля — это хорошая практика для избежания конфликтов.

Валидация данных дополнительного поля

Важно проверить введенные пользователем данные до создания аккаунта. Воспользуемся хуком registration_errors для проверки поля «Телефон».

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

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

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

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

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

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

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

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

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

И не забудем сохранить изменения:

function wpquiz_save_phone_profile_field( $user_id ) {
    if ( current_user_can( 'edit_user', $user_id ) ) {
        update_user_meta( $user_id, 'wpquiz_phone', sanitize_text_field( $_POST['wpquiz_phone'] ) );
    }
}
add_action( 'personal_options_update', 'wpquiz_save_phone_profile_field' );
add_action( 'edit_user_profile_update', 'wpquiz_save_phone_profile_field' );

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

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

  • User Registration – Custom Registration Form, Login and User Profile for WordPress. Позволяет создавать формы регистрации с кастомными полями через визуальный конструктор.
  • Profile Builder. Мощный плагин для расширения стандартных форм регистрации и профилей.
  • WP User Manager. Еще один популярный инструмент с возможностью добавления любых полей.

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

Заключение

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

×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее