Как отключить регистрацию по email в WordPress

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

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

По умолчанию WordPress позволяет любому пользователю зарегистрироваться с любым email. Это может привести к нескольким проблемам:

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

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

Как ограничить регистрацию по email с помощью плагинов

Существуют готовые плагины, которые позволяют легко настроить разрешённые или запрещённые email-адреса и домены без кода.

1. Плагин Restrict Email Domains

Этот плагин позволяет задать список разрешённых доменов для регистрации. Если пользователь вводит email с другого домена — регистрация отклоняется с сообщением.

Настройка проста: в админке указываете допустимые домены через запятую. Например:

example.com, company.org

Плагин проверит email при регистрации и не позволит зарегистрироваться, если домен не совпадает с разрешёнными.

2. Плагин Clearfy Pro

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

Использование готовых решений экономит время и снижает риск ошибок.

Как запретить регистрацию по email программно

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

Вот пример функции с префиксом wpfaq_, которая запрещает регистрацию для email с доменом temp-mail.org и spamdomain.com:

function wpfaq_restrict_email_registration($errors, $sanitized_user_login, $user_email) {
    $blocked_domains = array('temp-mail.org', 'spamdomain.com');
    $email_domain = substr(strrchr($user_email, '@'), 1);
    if (in_array(strtolower($email_domain), $blocked_domains)) {
        $errors->add('email_blocked', __('Регистрация с этого домена email запрещена.'));
    }
    return $errors;
}
add_filter('registration_errors', 'wpfaq_restrict_email_registration', 10, 3);

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

Как расширить функционал фильтрации email

Можно добавить проверку на разрешённый список доменов, например, если хотите принять регистрацию только с корпоративных email:

function wpfaq_allow_only_corporate_email($errors, $sanitized_user_login, $user_email) {
    $allowed_domains = array('example.com', 'company.org');
    $email_domain = substr(strrchr($user_email, '@'), 1);
    if (!in_array(strtolower($email_domain), $allowed_domains)) {
        $errors->add('email_not_allowed', __('Регистрация разрешена только с корпоративного email.'));
    }
    return $errors;
}
add_filter('registration_errors', 'wpfaq_allow_only_corporate_email', 10, 3);

Такой подход гибок и не требует установки дополнительных плагинов.

Проверка email при регистрации через AJAX и REST API

Если на сайте используется кастомная форма регистрации с AJAX или через REST API, важно дополнительно проверять email на сервере. Пример для REST API:

add_action('rest_api_init', function () {
    register_rest_route('wpfaq/v1', '/check_email', array(
        'methods' => 'POST',
        'callback' => 'wpfaq_rest_check_email',
        'permission_callback' => '__return_true',
    ));
});

function wpfaq_rest_check_email(WP_REST_Request $request) {
    $email = $request->get_param('email');
    $blocked_domains = array('temp-mail.org', 'spamdomain.com');
    $email_domain = substr(strrchr($email, '@'), 1);
    if (in_array(strtolower($email_domain), $blocked_domains)) {
        return new WP_REST_Response(array('valid' => false, 'message' => 'Регистрация с этого домена email запрещена.'), 400);
    }
    return new WP_REST_Response(array('valid' => true), 200);
}

Это позволит делать быструю проверку email на стороне клиента перед отправкой формы.

Советы по улучшению безопасности регистрации

Помимо ограничения по email, рекомендуем использовать комплексные меры:

  • Защита от ботов: добавьте капчу (например, с помощью плагина My Popup с капчей).
  • Отключение регистрации, если она не нужна: в настройках WordPress можно полностью отключить регистрацию.
  • Мониторинг новых регистраций: используйте плагины для уведомлений и блокировки подозрительных аккаунтов.

Такие меры помогут держать сайт в безопасности и снизить нагрузку на администраторов.

Выводы

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

Как автоматически удалять спам комментарии в WordPress
12.03.2026
Как установить ограничения на регистрацию в WordPress по домену email
24.01.2026
WooCommerce: как исключить товары по атрибутам из поиска и архива
21.04.2026
Оценка и отзывы в WordPress: настройка и примеры реализации
01.02.2026
WooCommerce: как исключить товары по атрибутам из корзины
17.04.2026