Как разрешить и запретить регистрацию по доменным именам в WordPress

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

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

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

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

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

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

Пример функции для разрешения регистрации только с определённых доменов

function wptavern_filter_registration_by_email_domain($errors, $sanitized_user_login, $user_email) {
    // Список разрешённых доменов
    $allowed_domains = array('example.com', 'wpshop.ru');

    $email_domain = substr(strrchr($user_email, '@'), 1);

    if (!in_array($email_domain, $allowed_domains)) {
        $errors->add('domain_restriction', __('Регистрация доступна только для доменов: ' . implode(', ', $allowed_domains)));
    }

    return $errors;
}
add_filter('registration_errors', 'wptavern_filter_registration_by_email_domain', 10, 3);

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

Пример функции для запрета регистрации с определённых доменов

function wptavern_block_registration_for_email_domain($errors, $sanitized_user_login, $user_email) {
    // Список запрещённых доменов
    $blocked_domains = array('spamdomain.com', 'baddomain.net');

    $email_domain = substr(strrchr($user_email, '@'), 1);

    if (in_array($email_domain, $blocked_domains)) {
        $errors->add('domain_block', __('Регистрация с этого домена запрещена.'));
    }

    return $errors;
}
add_filter('registration_errors', 'wptavern_block_registration_for_email_domain', 10, 3);

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

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

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

  • Restrict Email Domains – простой плагин для разрешения или запрета регистрации по доменам. Позволяет задать списки разрешённых и запрещённых доменов.
  • WP Email Domain Restriction – плагин с поддержкой кастомных сообщений и гибкой настройкой правил.
  • Clearfy Pro – расширенный плагин оптимизации, который включает модуль ограничения регистрации по доменам среди множества других полезных функций. Подробнее с ним можно ознакомиться на wpshop.ru.

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

Расширенные возможности: автоматическая роль и уведомления

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

Пример назначения роли по домену

function wptavern_assign_role_by_email_domain($user_id) {
    $user = get_userdata($user_id);
    $email_domain = substr(strrchr($user->user_email, '@'), 1);
    $special_domain = 'example.com';

    if ($email_domain === $special_domain) {
        $user->set_role('subscriber'); // или любая другая роль
    }
}
add_action('user_register', 'wptavern_assign_role_by_email_domain');

Также можно добавить отправку email админу о регистрации с нового домена для контроля.

Отладка и тестирование фильтрации регистрации

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

Для отладки можно временно добавить логирование ошибок в файл или использовать плагин Debug Log.

Итоги

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

Как отображать пользовательские сообщения в админке WordPress
17.02.2026
Как автоматизировать создание и удаление временных файлов в WordPress
21.01.2026
Как использовать хук WooCommerce 'woocommerce_product_query' для кастомизации списка товаров
04.06.2026
Ошибка «Invalid Payment Method» при оформлении заказа в WooCommerce: как исправить
07.05.2026
Как использовать Custom Post Status в WordPress: пошаговое руководство с примерами
13.01.2026