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

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

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

По умолчанию WordPress позволяет регистрироваться любому пользователю с реальным email-адресом. Это может привести к нежелательной регистрации спам-аккаунтов и росту нагрузки на сайт. Ограничение по домену email помогает:

  • Уменьшить количество спама и фальшивых регистраций;
  • Обеспечить безопасность и приватность закрытых ресурсов;
  • Автоматизировать процесс валидации пользователей.

Для реализации этого ограничения можно использовать плагины или добавить свой код в functions.php темы или в собственный плагин.

Как ограничить регистрацию по email-домену с помощью плагина

Если вы не хотите писать код, можно воспользоваться бесплатными плагинами из репозитория WordPress:

  • Restrict Email Domains — позволяет указать список разрешённых или запрещённых доменов для регистрации;
  • WP Email Domain Restriction — простой инструмент для ограничения по домену;
  • Clearfy Pro — содержит множество оптимизаций и функций безопасности, в том числе фильтрацию регистрируемых email.

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

Реализация ограничения регистрации по домену email на PHP

Если вы хотите более гибкое решение, можно добавить следующий код в ваш functions.php или создать собственный плагин. Код проверяет email при регистрации и выводит ошибку, если домен не в списке разрешённых.

function wpfaq_restrict_registration_by_email_domain($errors, $sanitized_user_login, $user_email) {
    $allowed_domains = array('example.com', 'mysite.org'); // здесь указывайте нужные домены
    $email_domain = substr(strrchr($user_email, '@'), 1);

    if (!in_array($email_domain, $allowed_domains)) {
        $errors->add('domain_error', __('Регистрация разрешена только с адресов электронной почты доменов: ' . implode(', ', $allowed_domains)));
    }
    return $errors;
}
add_filter('registration_errors', 'wpfaq_restrict_registration_by_email_domain', 10, 3);

В этом примере мы используем фильтр registration_errors, который позволяет проверить и добавить ошибки в процесс регистрации. Массив $allowed_domains содержит список разрешённых доменов. Если email не подходит — пользователь увидит сообщение об ошибке.

Расширение функционала: разрешить регистрацию с нескольких доменов и поддоменов

Иногда нужно разрешить регистрацию с поддоменов или похожих доменов. Для этого можно использовать проверку по маске с помощью регулярных выражений.

function wpfaq_restrict_registration_by_email_domain_regex($errors, $sanitized_user_login, $user_email) {
    $allowed_domains_patterns = array('/^example\\.com$/i', '/\\.mysite\\.org$/i');
    $email_domain = substr(strrchr($user_email, '@'), 1);

    $matched = false;
    foreach ($allowed_domains_patterns as $pattern) {
        if (preg_match($pattern, $email_domain)) {
            $matched = true;
            break;
        }
    }

    if (!$matched) {
        $errors->add('domain_error', __('Регистрация разрешена только с адресов электронной почты определённых доменов'));
    }
    return $errors;
}
remove_filter('registration_errors', 'wpfaq_restrict_registration_by_email_domain', 10);
add_filter('registration_errors', 'wpfaq_restrict_registration_by_email_domain_regex', 10, 3);

В этом коде можно указать шаблоны для основных доменов и их поддоменов. Например, /^example\.com$/i разрешит только example.com, а /\.mysite\.org$/i — любые поддомены mysite.org.

Проверка ограничения регистрации с помощью AJAX

Чтобы улучшить UX, можно сделать проверку email домена на лету при вводе адреса в форме регистрации через AJAX. Это позволит сразу показать пользователю, принят ли его email, без перезагрузки страницы.

Для этого понадобится добавить JavaScript и обработчик в WordPress:

add_action('wp_ajax_wpfaq_check_email_domain', 'wpfaq_check_email_domain_callback');
add_action('wp_ajax_nopriv_wpfaq_check_email_domain', 'wpfaq_check_email_domain_callback');

function wpfaq_check_email_domain_callback() {
    $email = isset($_POST['email']) ? sanitize_email($_POST['email']) : '';
    $allowed_domains = array('example.com', 'mysite.org');
    $email_domain = substr(strrchr($email, '@'), 1);

    if (in_array($email_domain, $allowed_domains)) {
        wp_send_json_success('Email разрешён');
    } else {
        wp_send_json_error('Регистрация с данного домена запрещена');
    }
    wp_die();
}

И в JavaScript (подключаемом к странице регистрации):

jQuery(document).ready(function($) {
    $('#user_email').on('blur', function() {
        var email = $(this).val();
        $.post(ajaxurl, {
            action: 'wpfaq_check_email_domain',
            email: email
        }, function(response) {
            if (response.success) {
                $('#email-feedback').text(response.data).css('color', 'green');
            } else {
                $('#email-feedback').text(response.data).css('color', 'red');
            }
        });
    });
});

Не забудьте добавить элемент <div id="email-feedback"></div> под поле email в форме регистрации для отображения сообщения.

Советы по безопасности и производительности

При реализации ограничения регистрации важно учитывать следующие моменты:

  • Всегда валидируйте и санитизируйте входящие данные (email) для предотвращения XSS и инъекций.
  • Если много доменов, храните их в отдельной таблице или опции для удобного управления.
  • Используйте кэширование и минимизируйте количество запросов к базе в AJAX-обработчиках.
  • Тестируйте работу на разных браузерах и устройствах.

Выводы и рекомендации

Ограничение регистрации по домену email — действенный способ контролировать аудиторию сайта и повысить безопасность. Вы можете использовать готовые плагины или написать собственный код для большей гибкости.

Если вы хотите более продвинутый функционал, обратите внимание на плагины из набора Clearfy Pro, который включает настройки безопасности и оптимизации WordPress.

Как создать автоматические резервные копии базы данных WordPress без плагинов
24.12.2025
Как добавить дополнительное поле в форму регистрации WordPress с примером кода
30.12.2025
Как реализовать отложенный запуск задач в WordPress с помощью WP-Cron
21.01.2026
WooCommerce: как автоматически удалять товары без склада из каталога
16.06.2026
Как использовать WPRemark для автоматического ответа на комментарии в WordPress
13.01.2026