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

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

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

Основные признаки необходимости ограничения

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

Пошаговое решение: фильтрация регистрации по домену email с помощью кода

В WordPress можно реализовать проверку email при регистрации с помощью хука registration_errors. Ниже пример, как разрешить регистрацию только с доменом example.com и заблокировать остальные.

add_filter('registration_errors', 'restrict_registration_by_email_domain', 10, 3);
function restrict_registration_by_email_domain($errors, $sanitized_user_login, $user_email) {
    $allowed_domain = 'example.com';
    $email_domain = substr(strrchr($user_email, '@'), 1);

    if(strtolower($email_domain) !== $allowed_domain) {
        $errors->add('domain_restriction', __('Регистрация разрешена только с домена example.com'));
    }
    return $errors;
}

Если нужно разрешить несколько доменов, используйте массив и проверку через in_array:

add_filter('registration_errors', 'restrict_registration_by_multiple_domains', 10, 3);
function restrict_registration_by_multiple_domains($errors, $sanitized_user_login, $user_email) {
    $allowed_domains = ['example.com', 'company.org'];
    $email_domain = substr(strrchr($user_email, '@'), 1);

    if(!in_array(strtolower($email_domain), $allowed_domains)) {
        $errors->add('domain_restriction', __('Регистрация разрешена только с доменов example.com и company.org'));
    }
    return $errors;
}

Проверка результата после внедрения

Чтобы убедиться, что фильтр работает правильно:

  • Попробуйте зарегистрироваться с email, не относящимся к разрешённому домену — должна появиться ошибка.
  • Зарегистрируйтесь с разрешённым доменом — регистрация должна пройти без ошибок.
  • Проверьте, что сообщение об ошибке отображается корректно на странице регистрации.

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

Частые ошибки и как их исправить

  • Ошибка: Фильтр не срабатывает при регистрации через кастомный плагин или REST API.
    Решение: Добавьте проверку домена непосредственно в обработчик регистрации плагина или REST эндпоинта.
  • Ошибка: Домены проверяются с учетом регистра, и некоторые допустимые адреса блокируются.
    Решение: Всегда приводите домен к нижнему регистру через strtolower перед сравнением.
  • Ошибка: Использование функции strrchr без проверки, что в email есть символ '@'.
    Решение: Добавьте валидацию email перед извлечением домена, например, через is_email().

Практические советы по безопасности и производительности

  • Чтобы избежать обхода ограничения, дополнительно проверяйте email на стороне сервера, а не только через JavaScript.
  • Если сайт использует регистрацию через сторонние сервисы (OAuth, соцсети), настройте ограничение на уровне интеграции или после получения email пользователя.
  • Для массового контроля регистраций можно использовать WP-Cron для периодической проверки новых пользователей и удаления или деактивации неподходящих.

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

ВариантПлюсыМинусыПример
Код через registration_errors Легко добавить, не требует плагинов, работает с базовой регистрацией Не всегда срабатывает с кастомными регистрациями и REST API В статье
Использование плагинов (например, WP Email Domain Restrictions) Удобный интерфейс, дополнительные настройки Зависимость от стороннего кода, возможные конфликты WP Email Domain Restrictions
Кастомная проверка в обработчиках REST API и OAuth Полный контроль, работает с любыми регистрациями Требует глубокой доработки и тестирования Зависит от конкретной реализации
Автоматическое создание отзывов в WordPress с помощью WPExpert Review
16.03.2026
Как автоматически удалять старые черновики в WordPress
16.01.2026
Как автоматически изменять meta description в WordPress для улучшения SEO
17.04.2026
Как оптимизировать загрузку WordPress без плагинов
24.11.2025
Как использовать WP-CLI для массовых изменений в WordPress
26.05.2026