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

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

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

Часто владельцы сайтов хотят принимать регистрацию только от пользователей с корпоративными или учебными доменами, например, @company.ru или @university.edu. Это помогает:

  • Поддерживать качественную аудиторию и уменьшить спам.
  • Обеспечить безопасность и контроль доступа.
  • Собрать релевантную базу пользователей для дальнейшей работы.

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

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

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

Добавьте следующий код в файл functions.php вашей темы или в плагин-сниппет:

function wplog_restrict_registration_domain($validation_errors, $sanitized_user_login, $user_email) {
    $allowed_domains = array('wplog.ru', 'company.ru', 'university.edu'); // Разрешённые домены
    $email_domain = substr(strrchr($user_email, '@'), 1);

    if (!in_array(strtolower($email_domain), $allowed_domains)) {
        $validation_errors->add('invalid_domain', __('Регистрация разрешена только с разрешённых доменов электронной почты.'));
    }

    return $validation_errors;
}
add_filter('registration_errors', 'wplog_restrict_registration_domain', 10, 3);

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

Обратите внимание, что список доменов задаётся в массиве $allowed_domains. Вы можете добавить туда любые нужные вам домены.

Обработка нескольких доменов с поддоменами

Иногда нужно разрешить не только точное совпадение, но и поддомены, например user@mail.wplog.ru. Для этого можно расширить логику проверки:

function wplog_restrict_registration_domain_extended($validation_errors, $sanitized_user_login, $user_email) {
    $allowed_domains = array('wplog.ru', 'company.ru', 'university.edu');
    $email_domain = strtolower(substr(strrchr($user_email, '@'), 1));
    $is_allowed = false;

    foreach ($allowed_domains as $domain) {
        if ($email_domain === $domain || substr($email_domain, -strlen('.' . $domain)) === '.' . $domain) {
            $is_allowed = true;
            break;
        }
    }

    if (!$is_allowed) {
        $validation_errors->add('invalid_domain', __('Регистрация разрешена только с разрешённых доменов электронной почты.'));
    }

    return $validation_errors;
}
add_filter('registration_errors', 'wplog_restrict_registration_domain_extended', 10, 3);

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

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

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

1. WP Restrict Email Domains

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

Плюсы:

  • Легко настроить без кода.
  • Поддержка нескольких доменов.
  • Совместимость с WooCommerce и BuddyPress.

2. Restrict User Registration by Email Domain

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

3. Clearfy Pro — модуль для контроля регистрации

Если вы используете Clearfy Pro от wpshop.ru, в нём есть расширенные возможности по контролю регистрации пользователей, в том числе по доменам email, что удобно при комплексной оптимизации сайта.

Дополнительные советы по ограничению регистрации

Валидация и UX

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

Блокировка регистрации через REST API и XML-RPC

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

Отслеживание попыток регистрации с запрещёнными доменами

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

Пример комплексной функции с логированием

function wplog_restrict_registration_with_logging($validation_errors, $sanitized_user_login, $user_email) {
    $allowed_domains = array('wplog.ru', 'company.ru');
    $email_domain = strtolower(substr(strrchr($user_email, '@'), 1));
    $is_allowed = false;

    foreach ($allowed_domains as $domain) {
        if ($email_domain === $domain || substr($email_domain, -strlen('.' . $domain)) === '.' . $domain) {
            $is_allowed = true;
            break;
        }
    }

    if (!$is_allowed) {
        error_log('Регистрация запрещена для email: ' . $user_email . ' IP: ' . $_SERVER['REMOTE_ADDR']);
        $validation_errors->add('invalid_domain', __('Регистрация разрешена только с разрешённых доменов электронной почты.'));
    }

    return $validation_errors;
}
add_filter('registration_errors', 'wplog_restrict_registration_with_logging', 10, 3);

Этот код дополнительно пишет в лог попытки регистрации с запрещёнными доменами, что поможет в администрировании.

Вывод

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

Как установить ограничение на длительность сессии в WordPress
14.04.2026
Как сделать автоматический отчет по производительности WordPress
26.02.2026
Как автоматически удалять неиспользуемые медиафайлы в WordPress
04.01.2026
Как удалить по умеренному варианту неактивных пользователей в WordPress
04.05.2026
Удаление изображений из библиотеки медиа WordPress по дате
22.02.2026