wpload.ru wordpress WPLoad.ru

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

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

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

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

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

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

Добавим фильтр на проверку поля email в форме регистрации. В этом примере мы запретим регистрацию с доменов spamdomain.com и freeemail.com.

add_filter('wpload_restrict_email_domains', function($errors, $sanitized_user_login, $user_email) {
    $blocked_domains = ['spamdomain.com', 'freeemail.com'];
    $email_domain = substr(strrchr($user_email, '@'), 1);
    if (in_array(strtolower($email_domain), $blocked_domains)) {
        $errors->add('domain_blocked', __('Регистрация с этого домена запрещена.'));
    }
    return $errors;
}, 10, 3);

add_action('wpload_restrict_email_domains_hook', function() {
    // Обработка регистрации
});

Правильнее добавить фильтр registration_errors WordPress, но здесь для наглядности с префиксом wpload — чтобы избежать конфликтов.

Пример реализации через стандартный хук registration_errors:

add_filter('registration_errors', function($errors, $sanitized_user_login, $user_email) {
    $blocked_domains = ['spamdomain.com', 'freeemail.com'];
    $email_domain = substr(strrchr($user_email, '@'), 1);
    if (in_array(strtolower($email_domain), $blocked_domains)) {
        $errors->add('domain_blocked', __('Регистрация с этого домена запрещена.'));
    }
    return $errors;
}, 10, 3);

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

Если вы не хотите писать код, можно использовать плагины. Вот проверенные варианты:

  • Restrict Email Domains — позволяет разрешить регистрацию только с определённых доменов;
  • Clearfy Pro — многофункциональный плагин оптимизации и безопасности с возможностью ограничивать регистрацию;
  • WP Email Login — плагин с расширенными настройками email при регистрации.

Плагин Clearfy Pro особенно полезен, если вы хотите комплексное решение для безопасности и оптимизации сайта.

Как разрешить регистрацию только с определённых доменов (белый список)

Иногда требуется не запретить, а наоборот — разрешить регистрацию только с доменов вашей организации. Для этого достаточно поменять условие в коде:

add_filter('registration_errors', function($errors, $sanitized_user_login, $user_email) {
    $allowed_domains = ['mycompany.com', 'partner.com'];
    $email_domain = substr(strrchr($user_email, '@'), 1);
    if (!in_array(strtolower($email_domain), $allowed_domains)) {
        $errors->add('domain_not_allowed', __('Регистрация разрешена только с корпоративных email.'));
    }
    return $errors;
}, 10, 3);

Такой подход удобен для внутренних порталов или сайтов с ограниченной аудиторией.

Как дополнительно уведомлять администратора о регистрации с запрещённым доменом

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

add_filter('registration_errors', function($errors, $sanitized_user_login, $user_email) {
    $blocked_domains = ['spamdomain.com', 'freeemail.com'];
    $email_domain = substr(strrchr($user_email, '@'), 1);
    if (in_array(strtolower($email_domain), $blocked_domains)) {
        wp_mail(get_option('admin_email'), 'Попытка регистрации с запрещённым доменом', 'Пользователь с email ' . $user_email . ' пытался зарегистрироваться.');
        $errors->add('domain_blocked', __('Регистрация с этого домена запрещена.'));
    }
    return $errors;
}, 10, 3);

Так вы быстро узнаете о подозрительной активности и сможете принять меры.

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

После добавления кода в functions.php вашей темы или создания собственного плагина, проведите тесты регистрации с разных почтовых доменов:

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

Если у вас сложная форма регистрации с кастомными плагинами, убедитесь, что фильтр registration_errors срабатывает корректно.

Заключение по теме ограничения регистрации по доменам

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

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

×

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

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

пишет статьи

готовит SEO

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

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