Одна из частых задач при администрировании сайта на 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, который помогает не только с ограничениями регистрации, но и с другими настройками безопасности.