wpload.ru wordpress WPLoad.ru

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

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

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

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

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

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

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

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

Рассмотрим пример функции wpload_restrict_registration_by_email_domain, которая блокирует регистрацию с доменов email из заданного списка.

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

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

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

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

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

Этот способ позволяет легко расширять список, а также модифицировать логику по необходимости.

Как протестировать

Попробуйте зарегистрироваться под емейлом с доменом из списка — вы увидите ошибку. С доменом вне списка регистрация пройдёт успешно.

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

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

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

Все эти плагины можно найти и скачать с официального репозитория WordPress. Для установки перейдите в админку сайта, выберите «Плагины» → «Добавить новый», введите название и установите.

Если вы используете плагины от WPSHOP, обращайте внимание на совместимость с вашей версией WordPress и другими установленными расширениями.

Дополнительные советы по безопасности и ограничениям регистрации

Кроме ограничения по доменам email, рекомендуем дополнительно использовать:

  • Капчу (Google reCAPTCHA, hCaptcha) для защиты от ботов.
  • Проверку на наличие disposable email (одноразовых почтовых адресов) с помощью сторонних API или плагинов.
  • Модерацию новых пользователей — автоматическую или ручную.
  • Ограничения по IP или геолокации, если актуально.

Комбинируя эти методы, вы существенно повысите качество пользовательской базы и защитите сайт от спама и злоупотреблений.

Пример добавления проверки disposable email через API

Для тонкой настройки можно интегрировать проверку сервисов одноразовых email. Пример использования API:

function wpload_check_disposable_email($errors, $sanitized_user_login, $user_email) {
    $api_key = 'ВАШ_API_КЛЮЧ';
    $response = wp_remote_get('https://disposable-email-checker.example/api?email=' . urlencode($user_email) . '&key=' . $api_key);

    if (is_wp_error($response)) {
        return $errors; // Не удалось проверить
    }

    $data = json_decode(wp_remote_retrieve_body($response), true);

    if (!empty($data['disposable']) && $data['disposable'] === true) {
        $errors->add('disposable_email', __('Регистрация с одноразовых email запрещена.'));
    }

    return $errors;
}
add_filter('registration_errors', 'wpload_check_disposable_email', 20, 3);

Этот код добавляет дополнительную проверку после основной, используя внешний сервис для выявления disposable email.

Итоговые рекомендации

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

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

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше