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

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

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

Без ограничений любой пользователь может зарегистрироваться, используя любую почту. Это увеличивает риск появления спам-аккаунтов, фальшивых пользователей и повышает нагрузку на сайт. Ограничение регистрации помогает:

  • Защитить сайт от спама и фальшивых аккаунтов.
  • Ограничить доступ к закрытому контенту.
  • Упростить управление пользователями и поддерживать качество сообщества.

Далее рассмотрим, как реализовать ограничения с помощью кода и плагинов.

Ограничение регистрации по домену email с помощью PHP-кода

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

Пример функции, ограничивающей регистрацию только доменами example.com и wpmentor.ru:

function wpmentor_restrict_registration_by_email_domain($errors, $sanitized_user_login, $user_email) {
    $allowed_domains = array('example.com', 'wpmentor.ru');
    $email_domain = substr(strrchr($user_email, '@'), 1);

    if (!in_array($email_domain, $allowed_domains)) {
        $errors->add('domain_restriction', __('Регистрация ограничена только доменами: example.com и wpmentor.ru', 'wpmentor'));
    }
    return $errors;
}
add_filter('registration_errors', 'wpmentor_restrict_registration_by_email_domain', 10, 3);

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

Как добавить исключения и расширить список доменов

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

Блокировка регистрации по определённым доменам

Иногда нужно наоборот — запретить регистрацию с определённых доменов, например, известных спам-доменов. Для этого код немного меняется:

function wpmentor_block_registration_by_email_domain($errors, $sanitized_user_login, $user_email) {
    $blocked_domains = array('spamdomain.com', 'badmail.net');
    $email_domain = substr(strrchr($user_email, '@'), 1);

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

Такой подход позволяет эффективно отсеивать нежелательные регистрации.

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

Если вы предпочитаете готовые решения, рекомендуем обратить внимание на следующие плагины:

  • WP Email Restrict — простой плагин для ограничения регистрации по домену email. Позволяет задать белый список доменов.
  • Registration Email Domain Filter — плагин с возможностью блокировки или разрешения доменов, поддерживает настройку через админку.
  • Clearfy Pro — многофункциональный плагин для оптимизации и защиты сайта, включает в себя модули для ограничения регистрации.

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

Ограничение регистрации по домену через WP-Cron: автоматическая очистка нежелательных пользователей

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

function wpmentor_delete_blocked_email_users() {
    $blocked_domains = array('spamdomain.com', 'badmail.net');
    $args = array(
        'role__in' => array('subscriber', 'customer'),
        'fields' => array('ID', 'user_email')
    );
    $users = get_users($args);

    foreach ($users as $user) {
        $email_domain = substr(strrchr($user->user_email, '@'), 1);
        if (in_array($email_domain, $blocked_domains)) {
            wp_delete_user($user->ID);
        }
    }
}

if (!wp_next_scheduled('wpmentor_cron_delete_blocked_email_users')) {
    wp_schedule_event(time(), 'daily', 'wpmentor_cron_delete_blocked_email_users');
}
add_action('wpmentor_cron_delete_blocked_email_users', 'wpmentor_delete_blocked_email_users');

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

Выводы и рекомендации

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

  • Для простого ограничения — используйте фильтр registration_errors с кастомным кодом.
  • Для более удобного управления — воспользуйтесь плагинами, например, WP Email Restrict или Clearfy Pro.
  • Для автоматической очистки — настройте WP-Cron задачу, как описано выше.

Таким образом, вы сможете гибко управлять регистрацией пользователей и поддерживать безопасность и качество вашего WordPress-сайта.

Как создать группы пользователей в WordPress для ограничения доступа к контенту
20.03.2026
WooCommerce: решение проблемы неработающей функции изменения стоимости товара при добавлении в корзину
22.04.2026
Как удалить ревизии записей в WordPress с помощью плагинов и кода
13.02.2026
Как установить ограничения на регистрацию в WordPress по домену и email
10.02.2026
Оптимизация загрузки изображений в WordPress для ускорения сайта
06.02.2026