В этой статье разберем, как ограничить регистрацию новых пользователей в WordPress по домену их электронной почты. Это полезно, если вы хотите разрешить регистрацию только пользователям с корпоративными email, образовательными доменами или наоборот — заблокировать нежелательные домены для регистрации.
Почему важно ограничивать регистрацию по email
В стандартной установке WordPress любой пользователь может зарегистрироваться с любым адресом электронной почты. Это может привести к спаму, регистрации ботов или нежелательных пользователей. Ограничение по домену email помогает:
- Контролировать аудиторию сайта;
- Повысить безопасность и качество пользователей;
- Упростить администрирование.
Например, если вы ведете корпоративный портал, можно разрешить регистрацию только с корпоративным доменом @wpexperts.ru.
Основные подходы к ограничению регистрации по email в WordPress
Существует два основных способа реализовать ограничение:
- Использование готовых плагинов;
- Реализация на уровне кода с помощью хуков WordPress.
Рассмотрим оба варианта.
Использование плагинов для ограничения регистрации
Среди плагинов можно выделить следующие:
- Restrict User Registration by Email Domain — позволяет настроить список разрешенных и запрещенных доменов;
- Ban Email Domains — простой и легкий плагин для блокировки доменов;
- Clearfy Pro — комплексный плагин оптимизации и безопасности, в котором есть функция ограничения регистрации по email.
Плагины удобны, если вы не хотите писать код, но иногда требуется более гибкая настройка.
Реализация ограничения по email через код
Чтобы запретить регистрацию с определенными доменами, можно использовать хук registration_errors. Он позволяет проверить email пользователя при попытке регистрации и вернуть ошибку, если домен не соответствует требованиям.
Пример функции с разрешением только корпоративного домена @wpexperts.ru:
function wpexperts_restrict_registration_by_email_domain( $errors, $sanitized_user_login, $user_email ) {
$allowed_domain = 'wpexperts.ru';
$email_domain = substr(strrchr($user_email, '@'), 1);
if ( strtolower($email_domain) !== strtolower($allowed_domain) ) {
$errors->add( 'domain_restriction', 'Регистрация разрешена только с корпоративным email @' . $allowed_domain );
}
return $errors;
}
add_filter( 'registration_errors', 'wpexperts_restrict_registration_by_email_domain', 10, 3 );В этом коде мы получаем домен из email, сравниваем с разрешенным и при несовпадении добавляем ошибку.
Разрешение нескольких доменов
Если нужно разрешать регистрацию с нескольких доменов, например корпоративного и образовательного, используйте массив:
function wpexperts_restrict_registration_multiple_domains( $errors, $sanitized_user_login, $user_email ) {
$allowed_domains = array( 'wpexperts.ru', 'edu.ru' );
$email_domain = substr(strrchr($user_email, '@'), 1);
if ( ! in_array( strtolower($email_domain), $allowed_domains ) ) {
$errors->add( 'domain_restriction', 'Регистрация разрешена только с email доменов: ' . implode( ', ', $allowed_domains ) );
}
return $errors;
}
add_filter( 'registration_errors', 'wpexperts_restrict_registration_multiple_domains', 10, 3 );Запрет регистрации с определенных доменов
Обратная задача — запретить регистрацию с нежелательных доменов, например, бесплатных почтовых сервисов:
function wpexperts_ban_registration_domains( $errors, $sanitized_user_login, $user_email ) {
$banned_domains = array( 'mail.ru', 'yandex.ru', 'gmail.com' );
$email_domain = substr(strrchr($user_email, '@'), 1);
if ( in_array( strtolower($email_domain), $banned_domains ) ) {
$errors->add( 'domain_ban', 'Регистрация с домена ' . $email_domain . ' запрещена.' );
}
return $errors;
}
add_filter( 'registration_errors', 'wpexperts_ban_registration_domains', 10, 3 );Дополнительные рекомендации и проверка
После внедрения ограничения обязательно протестируйте регистрацию с разными доменами, чтобы убедиться, что все работает корректно. При необходимости добавьте уведомления для пользователя с понятным сообщением об ошибке.
Если вы используете плагин Clearfy Pro, настройка происходит через интерфейс без кодирования — это удобно для новичков.
Как интегрировать ограничение с плагином WPGPT для регистрации через AI-чат
Если вы используете плагин WPGPT для взаимодействия с пользователями через чат и регистрацию, можно дополнительно проверить домен email при отправке формы регистрации через AJAX, добавив аналогичную проверку на стороне AJAX-обработчика.
Выводы
Ограничение регистрации по домену email — простой и эффективный способ повысить качество пользователей на вашем сайте WordPress. Реализовать его можно и с помощью кода, и при помощи плагинов. Выбор зависит от конкретных задач и ваших технических навыков.