В некоторых случаях владельцам сайтов на WordPress нужно ограничить регистрацию новых пользователей только определёнными доменами электронной почты. Это актуально для корпоративных порталов, закрытых сообществ и образовательных платформ, где нужно допускать пользователей с корпоративных или учебных почтовых адресов.
Почему важно ограничивать регистрацию по домену email
Ограничение по домену email помогает предотвратить спам-регистрации и автоматически отсеять нежелательных пользователей. Например, если вы хотите принимать только сотрудников компании с почтой @example.com, то можно запретить регистрацию с других доменов.
Реализация такого ограничения вручную через плагины часто бывает избыточной или слишком сложной. В этой статье мы рассмотрим, как с помощью кода добавить такое ограничение, а также приведём пример с популярным плагином Clearfy Pro, который может помочь в управлении регистрациями.
Как реализовать ограничение регистрации по домену email в WordPress кодом
Для этого нам нужно использовать хук registration_errors, который вызывается при попытке регистрации пользователя. В функции мы проверим домен email и, если он не совпадает с разрешённым, добавим ошибку.
function wp24_restrict_registration_by_email_domain($errors, $sanitized_user_login, $user_email) {
$allowed_domains = array('example.com', 'wp24.ru'); // список разрешённых доменов
$email_domain = substr(strrchr($user_email, '@'), 1);
if (!in_array($email_domain, $allowed_domains)) {
$errors->add('domain_not_allowed', __('Регистрация с домена "' . esc_html($email_domain) . '" запрещена. Используйте корпоративный email.'));
}
return $errors;
}
add_filter('registration_errors', 'wp24_restrict_registration_by_email_domain', 10, 3);В этом примере разрешены только email с доменами example.com и wp24.ru. Если регистрация проходит с другого домена, пользователь увидит ошибку и не сможет зарегистрироваться.
Вы можете расширить список доменов или сделать проверку более гибкой — например, разрешить все поддомены определённого домена или использовать регулярные выражения.
Расширение проверки на поддомены
Если хотите разрешить, например, любой поддомен company.com (sub1.company.com>, hr.company.com> и т.д.), можно немного изменить код:
function wp24_restrict_registration_by_email_domain_subdomains($errors, $sanitized_user_login, $user_email) {
$allowed_domain = 'company.com';
$email_domain = substr(strrchr($user_email, '@'), 1);
if ($email_domain !== $allowed_domain && !preg_match('/\.' . preg_quote($allowed_domain, '/') . '$/', $email_domain)) {
$errors->add('domain_not_allowed', __('Регистрация с домена "' . esc_html($email_domain) . '" запрещена. Используйте email с домена ' . $allowed_domain));
}
return $errors;
}
add_filter('registration_errors', 'wp24_restrict_registration_by_email_domain_subdomains', 10, 3);Пример использования плагина Clearfy Pro для ограничения регистрации
Плагин Clearfy Pro предлагает множество инструментов для оптимизации и безопасности сайта, включая расширенные настройки регистрации пользователей.
В Clearfy Pro есть модуль, позволяющий ограничить регистрацию по домену email без необходимости писать код. Вы можете задать список разрешённых доменов или запретить определённые.
Для этого достаточно активировать модуль в разделе плагина, добавить нужные домены в настройки и сохранить изменения. Плагин автоматически будет блокировать регистрацию с запрещённых адресов, показывая пользователю понятное сообщение.
Как тестировать ограничение регистрации
После добавления кода или настройки плагина обязательно протестируйте регистрацию с разными почтовыми доменами:
- Попробуйте зарегистрироваться с разрешённым доменом — регистрация должна пройти успешно.
- Попробуйте зарегистрироваться с запрещённым доменом — должна появиться ошибка.
- Проверьте, что сообщение об ошибке информативно и понятно для пользователя.
Для удобства тестирования можно использовать гостевые сессии браузера или разные браузеры, чтобы избежать проблем с кэшем и сессиями.
Выводы и рекомендации по ограничению регистрации
Ограничение регистрации по домену email — эффективный способ управлять пользователями и защитить сайт от спама. Использование собственного кода позволяет гибко настраивать правила, а интеграция с плагинами вроде Clearfy Pro упрощает задачу без программирования.
Помните, что если вы используете сторонние плагины для регистрации (например, WooCommerce, Ultimate Member или другие), проверку нужно будет интегрировать с их механизмами регистрации.
Также не забывайте о пользовательском опыте: предоставьте понятные подсказки и инструкции по регистрации, чтобы не создавать излишних препятствий для ваших пользователей.