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

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

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

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

Кроме того, подтверждение email снижает количество фейковых и спам-аккаунтов, повышая качество аудитории и защищая сайт от злоупотреблений.

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

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

Для начала добавим новое поле в форму регистрации WordPress. Мы будем использовать хуки register_form для вывода поля и registration_errors для проверки введённых данных.

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

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

Здесь мы выводим текстовое поле для телефона. Значение сохраняется при ошибках, чтобы пользователь не вводил заново.

Валидация нового поля при регистрации

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

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

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

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

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

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

Теперь телефон можно получить для любого пользователя через функцию get_user_meta( $user_id, 'wptask_phone', true ).

Реализация подтверждения email с помощью плагина и кода

Подтверждение email — одна из наиболее востребованных функций, которая не встроена по умолчанию в WordPress. Рассмотрим два способа её реализации.

Использование плагина Email Verification / Email Confirmation

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

Особенности:

  • Автоматическая генерация и отправка ссылок подтверждения
  • Блокировка доступа до подтверждения
  • Совместимость с большинством плагинов регистрации

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

Реализация подтверждения email вручную

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

  1. При регистрации генерируем уникальный токен и сохраняем его в метаданных пользователя вместе с меткой «неподтверждён»
  2. Отправляем письмо с ссылкой, содержащей токен
  3. По переходу по ссылке проверяем токен, меняем статус на «подтверждён»

Пример генерации токена и сохранения:

function wptask_user_register_send_confirmation( $user_id ) {
    $token = bin2hex( random_bytes(16) );
    update_user_meta( $user_id, 'wptask_email_confirm_token', $token );
    update_user_meta( $user_id, 'wptask_email_confirmed', 0 );

    $user_info = get_userdata( $user_id );
    $confirm_link = add_query_arg( array(
        'wptask_confirm_email' => $token,
        'user' => $user_id
    ), home_url() );

    $subject = 'Подтвердите ваш email на сайте ' . get_bloginfo( 'name' );
    $message = "Здравствуйте, {$user_info->user_login}!\n\nДля подтверждения email перейдите по ссылке:\n$confirm_link";

    wp_mail( $user_info->user_email, $subject, $message );
}
add_action( 'user_register', 'wptask_user_register_send_confirmation' );

Обработка перехода по ссылке и подтверждение email:

function wptask_confirm_email() {
    if ( isset( $_GET['wptask_confirm_email'], $_GET['user'] ) ) {
        $user_id = intval( $_GET['user'] );
        $token = sanitize_text_field( $_GET['wptask_confirm_email'] );
        $saved_token = get_user_meta( $user_id, 'wptask_email_confirm_token', true );

        if ( $token === $saved_token ) {
            update_user_meta( $user_id, 'wptask_email_confirmed', 1 );
            delete_user_meta( $user_id, 'wptask_email_confirm_token' );
            wp_die( 'Email успешно подтверждён. Теперь вы можете войти на сайт.' );
        } else {
            wp_die( 'Неверный токен подтверждения.' );
        }
    }
}
add_action( 'init', 'wptask_confirm_email' );

Чтобы ограничить вход на сайт для неподтверждённых пользователей, можно использовать фильтр authenticate и проверять мета-поле wptask_email_confirmed.

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

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

  • Clearfy Pro — оптимизация и безопасность, включая расширенные настройки регистрации
  • WPRemark — кастомизация форм и комментариев

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

Выводы по теме

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

Автоматическое удаление неиспользуемых таксономий в WordPress
01.04.2026
Автоматическое удаление неиспользуемых плагинов в WordPress: практическое руководство
15.02.2026
Автоматическое удаление неоплаченных заказов в WooCommerce
13.05.2026
Как добавить поле в форму регистрации WordPress с подтверждением email
21.01.2026
Как использовать хуки в WordPress для автоматизации задач
07.12.2025