Как установить ограничение на регистрацию в WordPress по домену e-mail

В некоторых случаях необходимо ограничить регистрацию на сайте WordPress, разрешая регистрацию только с определённых доменов электронной почты. Такой подход часто применяется для корпоративных сайтов, закрытых сообществ или учебных платформ, где регистрация пользователей должна происходить только с адресов корпоративного или образовательного домена.

Почему нужно ограничивать регистрацию по домену e-mail

Ограничение регистрации по домену электронной почты позволяет:

  • Контролировать аудиторию сайта, допуская только пользователей из нужной организации или сообщества;
  • Уменьшить вероятность регистрации спам-аккаунтов;
  • Автоматизировать процесс одобрения пользователей, исключая необходимость ручной модерации;
  • Повысить безопасность и снизить нагрузку на администратора.

Без такого ограничения на публичных сайтах с открытой регистрацией часто появляются нежелательные пользователи, что негативно сказывается на работе сайта.

Как реализовать ограничение регистрации по домену e-mail в WordPress

Для реализации этого ограничения есть несколько способов: с помощью кода или с помощью плагинов. Рассмотрим оба варианта.

Реализация на PHP с использованием хука регистрации

WordPress предоставляет хук registration_errors, который позволяет проверять данные регистрации и выдавать ошибки при несоответствии условий.

Ниже пример функции из пространства WPCommunity, которая ограничивает регистрацию только доменом example.com:

function wpcommunity_restrict_registration_by_email_domain( $errors, $sanitized_user_login, $user_email ) {
    $allowed_domain = 'example.com';
    $email_domain = substr(strrchr($user_email, '@'), 1);

    if ( strtolower($email_domain) !== strtolower($allowed_domain) ) {
        $errors->add(
            'invalid_email_domain',
            sprintf('Регистрация разрешена только с e-mail домена «%s». Ваш домен: «%s».', $allowed_domain, $email_domain)
        );
    }

    return $errors;
}
add_filter( 'registration_errors', 'wpcommunity_restrict_registration_by_email_domain', 10, 3 );

Этот код проверяет домен e-mail и если он не совпадает с разрешённым, то регистрация будет заблокирована с соответствующим сообщением об ошибке.

Как разрешить несколько доменов

Если нужно разрешить регистрацию с нескольких доменов, можно использовать массив и проверять вхождение домена в этот список:

function wpcommunity_restrict_registration_by_email_domains( $errors, $sanitized_user_login, $user_email ) {
    $allowed_domains = array('example.com', 'mysite.org', 'university.edu');
    $email_domain = strtolower(substr(strrchr($user_email, '@'), 1));

    if ( ! in_array($email_domain, $allowed_domains) ) {
        $errors->add(
            'invalid_email_domain',
            'Регистрация разрешена только с e-mail доменов: ' . implode(', ', $allowed_domains) . '. Ваш домен: «' . $email_domain . '».'
        );
    }

    return $errors;
}
add_filter( 'registration_errors', 'wpcommunity_restrict_registration_by_email_domains', 10, 3 );

Такой подход гибко позволяет расширять список разрешённых доменов без сложных настроек.

Использование плагинов для ограничения регистрации по домену e-mail

Если вы предпочитаете использовать готовые решения, обратите внимание на следующие плагины с поддержкой ограничения доменов:

  • WP Email Domain Restriction — простой и бесплатный плагин, который позволяет ограничить регистрацию по указанным доменам e-mail через настройки.
  • Clearfy Pro — мощный плагин для оптимизации и защиты WordPress, в котором есть модуль для ограничения регистрации по доменам e-mail, а также функции защиты сайта от спама и ботов.
  • WPCommunity — набор инструментов для управления сообществом WordPress, в котором можно создавать правила регистрации, включая проверку домена e-mail.

Плагины обычно имеют удобный интерфейс и позволяют быстро настроить ограничения без правки кода, что идеально для пользователей без опыта программирования.

Обработка ошибок и улучшение UX при ограничении домена e-mail

Очень важно, чтобы пользователь при попытке зарегистрироваться с запрещённого домена получил понятное и дружелюбное сообщение об ошибке. В кодовом примере выше мы уже добавили кастомное сообщение, но можно дополнительно:

  • Добавить подсказку в форму регистрации о допустимых доменах;
  • Использовать JavaScript для моментальной проверки e-mail при вводе и отображения ошибок без перезагрузки страницы;
  • Обеспечить корректный перевод сообщения, если сайт многоязычный.

Ниже пример простого JS для проверки домена e-mail на клиенте (можно добавить в шаблон формы регистрации):

document.addEventListener('DOMContentLoaded', function () {
    const allowedDomains = ['example.com', 'mysite.org'];
    const emailInput = document.querySelector('#user_email');
    const errorContainer = document.createElement('div');
    errorContainer.style.color = 'red';
    emailInput.parentNode.appendChild(errorContainer);

    emailInput.addEventListener('input', function () {
        const email = emailInput.value;
        const domain = email.substring(email.lastIndexOf('@') + 1).toLowerCase();
        if (email && !allowedDomains.includes(domain)) {
            errorContainer.textContent = 'Регистрация разрешена только с доменов: ' + allowedDomains.join(', ');
        } else {
            errorContainer.textContent = '';
        }
    });
});

Резюме и рекомендации по безопасности

Ограничение регистрации по домену e-mail — мощный инструмент для контроля доступа на ваш сайт WordPress. Важно:

  • Тестировать решение на разных типах адресов и учитывать возможные вариации (например, поддомены);
  • Поддерживать список разрешённых доменов в актуальном состоянии;
  • Использовать как минимум серверную проверку на PHP, а по возможности дополнять клиентской проверкой для удобства пользователей;
  • В случае использования плагинов — регулярно обновлять их и выбирать проверенные решения с хорошими отзывами.

Если вы хотите интегрировать ограничение регистрации в более комплексную систему управления сообществом, обратите внимание на WPCommunity, который отлично подходит для подобных задач.

Автоматическое удаление старого контента в WordPress по дате
16.02.2026
Как создать автоматическую систему удаления старых медиа файлов в WordPress
26.02.2026
Как использовать динамический кэшинг в WooCommerce для ускорения загрузки страниц
03.05.2026
Автоматическое удаление старых отзывов в WordPress: как настроить и реализовать
03.04.2026
Как создать автоматическую систему удаления нерабочих шорткодов в WordPress
08.03.2026

Задать вопрос о вордпресс, получить ответ - это все можно сделать в нашем сообществе WP. Сайт в данный момент в разработке, изучите ссылки ниже: