Регистрация пользователей с бесплатными email-адресами (например, @gmail.com, @yahoo.com, @mail.ru) часто становится причиной появления ботов, спама и нежелательных аккаунтов на сайте WordPress. В этой статье рассмотрим, как эффективно ограничить регистрацию по таким email, используя собственный код и готовые плагины.
Почему стоит ограничить регистрацию по бесплатным email
Использование бесплатных почтовых сервисов для регистрации часто приводит к снижению качества пользовательской базы. Спамеры и боты легко создают аккаунты с такими адресами, что мешает управлению сайтом, ухудшает аналитику и снижает доверие к проекту.
Ограничение регистрации по доменам email позволяет повысить качество пользователей и избежать лишних угроз безопасности.
Однако важно не усложнять слишком сильно регистрацию, чтобы реальные пользователи не испытывали неудобств.
Как запретить регистрацию по бесплатным email с помощью кода
Самый простой способ — использовать хук registration_errors, чтобы проверить домен email при регистрации и отклонить нежелательные варианты.
Ниже пример функции wpfaq_restrict_email_domains, которая запрещает регистрацию с доменов из списка бесплатных почтовиков.
function wpfaq_restrict_email_domains( $errors, $sanitized_user_login, $user_email ) {
$blocked_domains = array('gmail.com', 'yahoo.com', 'mail.ru', 'yandex.ru', 'hotmail.com');
$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', 'wpfaq_restrict_email_domains', 10, 3);
Этот код нужно добавить в файл functions.php вашей темы или в отдельный плагин. При регистрации с запрещённым доменом пользователь увидит сообщение об ошибке и не сможет продолжить.
Как расширить список запрещённых доменов
Вы можете добавить свои домены в массив $blocked_domains. Также можно вынести список в опции, чтобы редактировать без изменения кода.
Использование плагинов для ограничения регистрации по email
Если не хотите писать код, есть готовые решения:
- WP Email Restrict — простой плагин для ограничения регистрации по email-доменам. Позволяет гибко настраивать разрешённые и запрещённые домены.
- Ban Hammer — плагин для блокировки регистрации по IP, email и доменам с расширенными возможностями.
- Clearfy Pro от WPShop — включает модуль безопасности, где можно настроить фильтрацию email при регистрации.
Плагины удобны для тех, кто хочет быстро внедрить функционал без кода и получить дополнительные опции.
Как показывать пользователю подсказки при регистрации
Для улучшения UX полезно информировать пользователя, почему его email отклонён. В коде выше мы уже добавили сообщение об ошибке. Можно дополнительно использовать JavaScript для проверки email на клиенте.
function wpfaq_check_email_domain_js() {
?>
<script>
document.addEventListener('DOMContentLoaded', function() {
var emailInput = document.getElementById('user_email');
var form = emailInput ? emailInput.closest('form') : null;
if (!emailInput || !form) return;
form.addEventListener('submit', function(e) {
var blockedDomains = ['gmail.com', 'yahoo.com', 'mail.ru', 'yandex.ru', 'hotmail.com'];
var email = emailInput.value;
var domain = email.substring(email.lastIndexOf('@') + 1).toLowerCase();
if (blockedDomains.includes(domain)) {
alert('Регистрация с бесплатных почтовых доменов запрещена. Пожалуйста, используйте корпоративный email.');
e.preventDefault();
}
});
});
</script>
<?php
}
add_action('login_enqueue_scripts', 'wpfaq_check_email_domain_js');
Этот скрипт добавляет проверку на стороне клиента и помогает избежать отправки формы с запрещённым email.
Плюсы и минусы ограничения регистрации по бесплатным email
Преимущества
- Снижение количества спам-аккаунтов и ботов.
- Повышение качества базы пользователей.
- Упрощение управления сообществом.
Недостатки
- Потеря части реальных пользователей, если они используют бесплатные email.
- Необходимо информировать пользователей о причинах отказа.
- Требуется поддержка и обновление списка доменов.
Рекомендации по внедрению и тестированию
Перед запуском на живом сайте тщательно протестируйте ограничения на тестовом окружении. Проверьте, что сообщения об ошибках понятны, и что не блокируются важные корпоративные домены.
Можно сделать отдельную страницу со списком разрешённых доменов и ссылкой на нее в форме регистрации.
Если используете плагин Clearfy Pro, настройте фильтры через его интерфейс — это удобно и безопасно.
Заключение
Ограничение регистрации по бесплатным email-адресам — эффективный способ повысить качество пользователей WordPress-сайта и защититься от спама. Можно реализовать это как с помощью простого кода, так и через специализированные плагины. Главное — найти баланс между безопасностью и удобством для реальных посетителей.