Запрет на регистрацию по email-домену в WordPress

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

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

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

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

Как реализовать запрет по email-домену через код в WordPress

Добавление проверки при регистрации

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

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

    // Получаем домен из email
    $email_domain = substr(strrchr($user_email, '@'), 1);

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

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

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

Расширение списка запрещённых доменов через админку

Для удобства можно добавить настройку в админпанель, чтобы управлять списком доменов без правки кода. Один из вариантов — использовать опцию WordPress и форму в разделе настроек.

Пример добавления опции и вывода поля в админке:

function wpzen_email_domain_settings_init() {
    register_setting('general', 'wpzen_blocked_email_domains', array(
        'type' => 'string',
        'sanitize_callback' => 'sanitize_textarea_field',
        'default' => '',
    ));

    add_settings_field(
        'wpzen_blocked_email_domains',
        'Запрещённые email-домены (через запятую)',
        'wpzen_email_domain_settings_field_html',
        'general'
    );
}
add_action('admin_init', 'wpzen_email_domain_settings_init');

function wpzen_email_domain_settings_field_html() {
    $value = get_option('wpzen_blocked_email_domains', '');
    echo '<textarea name="wpzen_blocked_email_domains" rows="5" cols="50" class="large-text code">' . esc_textarea($value) . '</textarea>';
}

Далее меняем функцию фильтрации, чтобы она брала домены из этой опции:

function wpzen_restrict_email_domain_registration($errors, $sanitized_user_login, $user_email) {
    $blocked_domains_option = get_option('wpzen_blocked_email_domains', '');
    $blocked_domains = array_map('trim', explode(',', $blocked_domains_option));

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

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

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

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

Если вы предпочитаете готовые решения, можно обратить внимание на плагины, которые поддерживают фильтрацию email-доменов:

  • WP Email Domain Restriction — простой плагин, который позволяет запретить регистрацию по указанным доменам. Простой в настройке.
  • RegistrationMagic — мощный инструмент для регистрации с гибкими ограничениями, включая фильтрацию email-доменов.
  • Restrict User Signups — плагин с возможностью задать белые и чёрные списки доменов, подходит для корпоративных сайтов.

Преимущество плагинов в том, что они обычно имеют UI для управления списками и не требуют ручного изменения кода.

Как тестировать и отлаживать запрет регистрации

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

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

Для отладки можно временно включить вывод ошибок WordPress и логирование через WP_DEBUG. Также полезно добавить логирование в код фильтрации, чтобы фиксировать попытки регистрации с запрещёнными доменами.

Резюме и рекомендации

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

Если вы хотите быстро внедрить этот функционал без программирования, попробуйте плагин WP Email Domain Restriction — он хорошо подходит для большинства задач.

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

Оптимизация базы данных WordPress: как ускорить сайт и уменьшить нагрузку
25.09.2026
Как ускорить загрузку изображений в WordPress с помощью lazy load и оптимизации
20.09.2026
Как создать многоязычный сайт на WordPress с помощью Polylang
26.09.2026
Запрет на регистрацию по email-домену в WordPress
29.09.2026
Как отключить XML sitemap для отдельных типов записей в WordPress
28.09.2026