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

|

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

Почему важно использовать подтверждение email при регистрации

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

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

Как реализовать подтверждение email в WordPress – обзор подходов

Есть несколько способов добавить подтверждение email:

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

Код для добавления подтверждения email при регистрации на WordPress

Основная идея – при регистрации сохранять пользователя с меткой «неактивен» и отправлять письмо с ссылкой активации. Только после перехода по ссылке аккаунт становится активным.

1. Создание пользовательского статуса и хранение токена активации

function wppremium_register_user_with_email_confirmation($user_id) {
    // Генерируем уникальный токен
    $token = bin2hex(random_bytes(16));
    // Сохраняем токен в метаданных пользователя
    update_user_meta($user_id, 'wppremium_email_confirm_token', $token);
    // Устанавливаем статус пользователя как неактивного
    update_user_meta($user_id, 'wppremium_email_confirmed', 0);

    // Получаем email
    $user_info = get_userdata($user_id);
    $email = $user_info->user_email;

    // Формируем ссылку активации
    $activation_link = add_query_arg(
        array(
            'wppremium_confirm_email' => $user_id,
            'token' => $token
        ), home_url('/'));

    // Отправляем письмо
    wp_mail($email, 'Подтверждение регистрации', 'Перейдите по ссылке для активации вашего аккаунта: ' . $activation_link);
}
add_action('user_register', 'wppremium_register_user_with_email_confirmation');

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

2. Обработка перехода по ссылке активации

function wppremium_confirm_user_email() {
    if (isset($_GET['wppremium_confirm_email'], $_GET['token'])) {
        $user_id = intval($_GET['wppremium_confirm_email']);
        $token = sanitize_text_field($_GET['token']);

        $saved_token = get_user_meta($user_id, 'wppremium_email_confirm_token', true);
        $confirmed = get_user_meta($user_id, 'wppremium_email_confirmed', true);

        if ($confirmed) {
            echo 'Ваш аккаунт уже активирован.';
            exit;
        }

        if ($saved_token && hash_equals($saved_token, $token)) {
            update_user_meta($user_id, 'wppremium_email_confirmed', 1);
            delete_user_meta($user_id, 'wppremium_email_confirm_token');
            echo 'Спасибо, ваш аккаунт активирован! Теперь вы можете войти.';
        } else {
            echo 'Неверный или просроченный токен активации.';
        }
        exit;
    }
}
add_action('init', 'wppremium_confirm_user_email');

Данная функция проверяет параметры в URL, сверяет токен и активирует аккаунт.

3. Блокировка входа для неактивированных пользователей

function wppremium_block_unconfirmed_login($user, $username, $password) {
    if (is_a($user, 'WP_User')) {
        $confirmed = get_user_meta($user->ID, 'wppremium_email_confirmed', true);
        if ($confirmed != 1) {
            return new WP_Error('email_not_confirmed', __('Ошибка: ваш email не подтверждён. Проверьте почту.'));
        }
    }
    return $user;
}
add_filter('authenticate', 'wppremium_block_unconfirmed_login', 30, 3);

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

Настройки плагинов для упрощения подтверждения email

Если вы не хотите писать код, рекомендуем обратить внимание на следующие плагины:

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

Дополнительные советы по безопасности регистрации в WordPress

Для повышения качества регистрации и безопасности рекомендуем:

Все эти меры вместе дают высокий уровень защиты и контроля за регистрацией.

Выводы

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

Используйте ссылки на плагины от WPShop с utm-метками для удобства и поддержки разработчиков:

Как избежать конфликтов между плагинами в WordPress: практические решения
03.03.2026
Как добавить AJAX в формы WordPress без плагинов
15.12.2025
Как добавить собственные поля в формы регистрации WordPress и сохранить данные
26.03.2026
WooCommerce: как настроить отправку писем при массовом изменении статуса заказов
11.06.2026
WooCommerce: автоматическое удаление неактивных корзин и заказов
18.05.2026
×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее