В некоторых случаях владельцам сайтов на WordPress необходимо ограничить регистрацию пользователей по определённым доменам электронных почт. Это полезно для предотвращения регистрации с временных, спамовых или корпоративных почтовых доменов, которые по каким-то причинам не желательны для вашего ресурса.
Зачем ограничивать регистрацию по доменам email
Часто спамеры и боты пытаются регистрироваться с адресов на бесплатных почтовых сервисах или подозрительных доменах. Если вы ведёте закрытый ресурс, например, корпоративный портал или сообщество, где важна чистота аудитории, запрет регистрации по определённым доменам поможет избежать лишней нагрузки и повысить качество пользователей.
Кроме того, запрет на регистрацию с определённых доменов может помочь снизить количество фейковых аккаунтов и улучшить безопасность сайта.
Как работает ограничение регистрации по доменам email в WordPress
По умолчанию WordPress не имеет встроенного механизма запрета регистрации по доменам email. Однако, с помощью фильтров и хуков можно добавить проверку на этапе регистрации. Если домен email пользователя совпадает с запрещённым, регистрация будет отменена с выводом сообщения об ошибке.
Рассмотрим, как реализовать такой механизм с помощью собственного кода и как можно использовать плагины для упрощения задачи.
Список запрещённых доменов
Для начала необходимо составить массив с доменами, которые вы хотите запретить. Например:
$wporg_forbid_domains = ['tempmail.com', 'mailinator.com', 'disposablemail.com'];Список можно расширять по мере необходимости.
Реализация запрета регистрации по доменам email через код
Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:
function wporg_restrict_registration_by_email_domain( $errors, $sanitized_user_login, $user_email ) {
$forbid_domains = ['tempmail.com', 'mailinator.com', 'disposablemail.com'];
$email_domain = strtolower( substr( strrchr( $user_email, '@' ), 1 ) );
if ( in_array( $email_domain, $forbid_domains ) ) {
$errors->add( 'registration_error', __( 'Регистрация с почтовых доменов типа ' . $email_domain . ' запрещена.', 'wporg' ) );
}
return $errors;
}
add_filter( 'registration_errors', 'wporg_restrict_registration_by_email_domain', 10, 3 );Код работает так:
- Получает домен из email пользователя
- Проверяет, есть ли он в списке запрещённых
- Если да, добавляет ошибку, которая блокирует регистрацию
Так вы легко можете добавлять или убирать домены из массива $forbid_domains.
Обработка сообщений об ошибках
WordPress автоматически отобразит ошибку на странице регистрации, если домен запрещён. Вы можете кастомизировать сообщение, чтобы оно было информативным и дружелюбным для пользователя.
Использование плагинов для ограничения регистрации по email доменам
Если вы не хотите заниматься кодом, можно воспользоваться готовыми решениями. Рассмотрим несколько популярных плагинов:
1. WP Cerber Security
Мощный плагин безопасности с функцией ограничения регистрации. Позволяет блокировать регистрацию по доменам email, IP-адресам и другим параметрам.
Подробнее о WP Cerber на WPSHOP
2. Registration Restrictions
Простой плагин, который позволяет задать список запрещённых доменов для регистрации. Отличается лёгкостью и минимализмом.
Подробнее о Registration Restrictions на WPSHOP
3. Clearfy Pro
Оптимизационный плагин с широким функционалом, включая защиту от спам-регистраций и возможность ограничивать регистрации по email доменам.
Подробнее о Clearfy Pro на WPSHOP
Расширенные варианты: блокировка по маскам и динамическое управление списком
Вместо жёсткого списка доменов можно использовать регулярные выражения для более гибкого контроля. Например, запретить все домены, заканчивающиеся на .ru или содержащие определённую подстроку.
function wporg_restrict_registration_by_email_domain_regex( $errors, $sanitized_user_login, $user_email ) {
$patterns = ['/^.*@tempmail\.com$/i', '/^.*@.*disposable.*$/i'];
foreach ( $patterns as $pattern ) {
if ( preg_match( $pattern, $user_email ) ) {
$errors->add( 'registration_error', __( 'Регистрация с этого почтового домена запрещена.', 'wporg' ) );
break;
}
}
return $errors;
}
add_filter( 'registration_errors', 'wporg_restrict_registration_by_email_domain_regex', 10, 3 );Также можно хранить список запрещённых доменов в базе данных и управлять им через админку — это потребует создания отдельного интерфейса, но даст удобство для администраторов.
Советы по тестированию и отладке ограничения регистрации
После внедрения кода или плагина обязательно протестируйте регистрацию с разными почтовыми доменами, чтобы убедиться, что:
- Запрещённые домены действительно блокируются
- Разрешённые домены проходят регистрацию без проблем
- Сообщения об ошибках понятны пользователям
Если вы используете кеширование или CDN, не забудьте очистить кеш после внесения изменений.
Выводы и рекомендации
Запрет регистрации по доменам email — эффективный способ борьбы со спамом и нежелательными пользователями на сайте WordPress. Если у вас небольшой список доменов, проще реализовать проверку через код. Для более сложных случаев лучше использовать специализированные плагины с расширенными возможностями.
Для удобства рекомендуем ознакомиться с плагинами на WPSHOP, где вы найдёте решения, которые легко интегрируются и поддерживаются.