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

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

Зачем нужна автоматическая регистрация с подтверждением email

Часто на сайтах нужно, чтобы пользователь мог быстро зарегистрироваться и сразу получить доступ к определённым функциям. При этом важно убедиться, что указанный email реальный, чтобы избежать регистрации ботов и «мусорных» аккаунтов. Подтверждение email — эффективный способ защитить сайт и повысить качество аудитории.

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

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

Выбор плагина для верификации email при регистрации

Существует несколько плагинов, которые позволяют добавить подтверждение email в процесс регистрации. Вот самые популярные и простые в использовании:

  • WP Email Verification — лёгкий плагин для отправки письма с кодом подтверждения;
    https://ru.wordpress.org/plugins/wp-email-verification/
  • RegistrationMagic — мощный инструмент для кастомизации регистрации с подтверждением email и дополнительными полями;
    https://wordpress.org/plugins/custom-registration-form-builder-with-submission-manager/
  • Clearfy Pro (с функцией верификации) — помогает оптимизировать регистрацию и безопасность;
    https://wpshop.ru/clearfy-pro?utm_source=wpshab.ru&utm_medium=article&utm_campaign=kak-sozdat-avtomaticheskuyu-registraciyu-polzovateley-v-wordpress

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

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

Ниже рассмотрим упрощённый пример, как можно реализовать процесс регистрации с отправкой письма с уникальной ссылкой подтверждения. Такой подход позволит зарегистрировать пользователя, но активировать его аккаунт только после перехода по ссылке.

Создание формы регистрации

Добавим на страницу простой HTML-форму регистрации:

<form method="post" action="">
  <input type="email" name="wpshab_email" placeholder="Ваш email" required />
  <input type="password" name="wpshab_password" placeholder="Пароль" required />
  <input type="submit" name="wpshab_register" value="Зарегистрироваться" />
</form>

Обработка регистрации и отправка письма

Добавим обработчик в functions.php вашей темы или в плагин:

function wpshab_handle_user_registration() {
    if ( isset($_POST['wpshab_register']) ) {
        $email = sanitize_email($_POST['wpshab_email']);
        $password = $_POST['wpshab_password'];

        if ( !is_email($email) ) {
            echo '<p>Некорректный email.</p>';
            return;
        }

        if ( email_exists($email) ) {
            echo '<p>Пользователь с таким email уже зарегистрирован.</p>';
            return;
        }

        $user_login = current(explode('@', $email));
        $activation_key = wp_generate_password(20, false);

        // Создаём пользователя, но ставим статус неактивным
        $user_id = wp_create_user($user_login, $password, $email);
        if ( is_wp_error($user_id) ) {
            echo '<p>Ошибка регистрации пользователя.</p>';
            return;
        }

        update_user_meta($user_id, 'wpshab_activation_key', $activation_key);
        update_user_meta($user_id, 'wpshab_is_activated', 0);

        $activation_link = add_query_arg(array(
            'wpshab_activate' => $user_id,
            'key' => $activation_key
        ), site_url());

        $subject = 'Подтверждение регистрации на сайте ' . get_bloginfo('name');
        $message = "Здравствуйте!\n\nДля подтверждения регистрации перейдите по ссылке: " . $activation_link;

        wp_mail($email, $subject, $message);

        echo '<p>Проверьте вашу почту для подтверждения регистрации.</p>';
    }
}
add_action('wp_head', 'wpshab_handle_user_registration');

Обработка активации аккаунта

Добавим проверку ссылки с активацией при загрузке любой страницы:

function wpshab_handle_user_activation() {
    if ( isset($_GET['wpshab_activate'], $_GET['key']) ) {
        $user_id = intval($_GET['wpshab_activate']);
        $key = sanitize_text_field($_GET['key']);

        $saved_key = get_user_meta($user_id, 'wpshab_activation_key', true);
        $activated = get_user_meta($user_id, 'wpshab_is_activated', true);

        if ( $activated ) {
            echo '<p>Ваш аккаунт уже активирован.</p>';
            return;
        }

        if ( $key === $saved_key ) {
            update_user_meta($user_id, 'wpshab_is_activated', 1);
            delete_user_meta($user_id, 'wpshab_activation_key');

            echo '<p>Регистрация подтверждена! Теперь вы можете войти на сайт.</p>';
        } else {
            echo '<p>Неверный ключ активации.</p>';
        }
    }
}
add_action('wp_head', 'wpshab_handle_user_activation');

Ограничение входа неактивных пользователей

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

function wpshab_prevent_login_if_not_activated($user, $username, $password) {
    $user_data = get_user_by('login', $username);
    if ( $user_data ) {
        $activated = get_user_meta($user_data->ID, 'wpshab_is_activated', true);
        if ( !$activated ) {
            return new WP_Error('activation_required', '<strong>Ошибка:</strong> Ваш аккаунт не активирован. Проверьте почту.');
        }
    }
    return $user;
}
add_filter('authenticate', 'wpshab_prevent_login_if_not_activated', 30, 3);

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

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

  • WPRemark — для создания кастомных форм регистрации и управления ими;
    Подробнее на wpshop.ru
  • Clearfy Pro — оптимизация безопасности и управления регистрацией;
    Подробнее на wpshop.ru
  • Добавление капчи (например, Google reCAPTCHA) для защиты от спама.

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

Как сделать уникальный meta description в WordPress автоматически
02.02.2026
Как использовать хуки в WordPress для расширения функциональности
24.11.2025
Как автоматизировать обновление плагинов в WordPress без рисков
23.01.2026
Как использовать REST API для создания кастомных эндпоинтов в WordPress
06.12.2025
Как создать динамический вывод постов в WordPress
29.11.2025