Часто на сайтах WordPress возникает необходимость ограничить регистрацию новых пользователей по определённым доменам электронной почты. Это актуально для корпоративных порталов, закрытых сообществ или образовательных платформ, где доступ предоставляется только сотрудникам или студентам с определёнными почтовыми доменами.
Почему важно ограничивать регистрацию по домену email
Без ограничений любой пользователь может зарегистрироваться на сайте, что создаёт риски спама, мошенничества и нарушения политики безопасности. Ограничение регистрации по домену email помогает:
- Контролировать аудиторию сайта и обеспечивать доступ только проверенным группам пользователей.
- Избежать регистрации с временных или подозрительных почтовых сервисов.
- Автоматизировать процесс принятия пользователей, экономя время администраторов.
Для реализации таких ограничений в WordPress можно использовать как плагины, так и собственные функции с хуками.
Использование плагина WPExperts Email Domain Restriction
Для удобства и быстрого внедрения можно воспользоваться специализированным плагином. Мы рекомендуем плагин WPExperts Email Domain Restriction, который позволяет легко настроить разрешённые и запрещённые домены для регистрации.
Основные функции плагина:
- Установка белого и чёрного списка доменов.
- Настройка сообщений об ошибках при попытке регистрации с запрещённым доменом.
- Совместимость с WooCommerce и BuddyPress.
После установки и активации плагина в админке появится раздел настроек, где можно добавить необходимые домены в списки.
Реализация ограничения домена email с помощью собственного кода
Если вы предпочитаете контролировать функционал через код, можно добавить следующий пример в файл functions.php вашей темы или в кастомный плагин:
function wpexperts_restrict_registration_by_email_domain($errors, $sanitized_user_login, $user_email) {
$allowed_domains = array('example.com', 'company.org'); // Разрешённые домены
$email_domain = substr(strrchr($user_email, '@'), 1);
if (!in_array($email_domain, $allowed_domains)) {
$errors->add('domain_not_allowed', __('Регистрация с домена "' . $email_domain . '" запрещена. Пожалуйста, используйте корпоративный email.'));
}
return $errors;
}
add_filter('registration_errors', 'wpexperts_restrict_registration_by_email_domain', 10, 3);В этом примере функция wpexperts_restrict_registration_by_email_domain проверяет домен email при регистрации и добавляет ошибку, если домен не входит в разрешённый список.
Вы можете расширить логику, добавив чёрный список или поддержку динамического управления доменами через админ-панель.
Как добавить чёрный список доменов
Если нужно запретить регистрацию с конкретных доменов, можно использовать такой подход:
function wpexperts_block_blacklisted_email_domains($errors, $sanitized_user_login, $user_email) {
$blacklisted_domains = array('spam.com', 'tempmail.net'); // Запрещённые домены
$email_domain = substr(strrchr($user_email, '@'), 1);
if (in_array($email_domain, $blacklisted_domains)) {
$errors->add('domain_blacklisted', __('Регистрация с домена "' . $email_domain . '" запрещена.'));
}
return $errors;
}
add_filter('registration_errors', 'wpexperts_block_blacklisted_email_domains', 10, 3);Уведомление администратора о регистрации с нового домена
Иногда полезно получать уведомления, когда пользователь регистрируется с домена, которого раньше не было на сайте. Это можно реализовать через следующий код:
function wpexperts_notify_admin_new_email_domain($user_id) {
$user_info = get_userdata($user_id);
$email = $user_info->user_email;
$email_domain = substr(strrchr($email, '@'), 1);
$option_key = 'wpexperts_known_email_domains';
$known_domains = get_option($option_key, array());
if (!in_array($email_domain, $known_domains)) {
$known_domains[] = $email_domain;
update_option($option_key, $known_domains);
wp_mail(get_option('admin_email'), 'Новый домен электронной почты', 'Пользователь зарегистрировался с новым доменом: ' . $email_domain);
}
}
add_action('user_register', 'wpexperts_notify_admin_new_email_domain');Этот код сохраняет список известных доменов и отправляет письмо администратору при регистрации с новым доменом.
Советы по тестированию и отладке
После внедрения ограничений следует тщательно протестировать регистрацию:
- Попробуйте зарегистрироваться с разрешённым доменом — регистрация должна пройти успешно.
- Попытайтесь зарегистрироваться с запрещённым доменом — должна возникнуть ошибка с понятным сообщением.
- Проверьте, что уведомления администратора работают корректно, если используете этот функционал.
Для отладки используйте плагин Clearfy Pro — он помогает оптимизировать и контролировать процессы регистрации и безопасности.
Итог
Ограничение регистрации по домену электронной почты — эффективный способ контролировать аудиторию сайта WordPress и предотвращать нежелательные регистрации. Используйте готовые плагины для быстрого старта или внедряйте собственные решения с помощью хуков и фильтров, чтобы адаптировать функционал под свои нужды.