Запрет регистрации по доменам email в WordPress с подробным руководством

|

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

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

Часто администраторы сайтов сталкиваются с проблемой спам-регистраций или с регистрациями пользователей с корпоративных доменов, которые не должны иметь доступ к определённому контенту или функциям. Запрет по доменам email помогает:

Рассмотрим, как это реализовать в WordPress.

Запрет регистрации по доменам email через код — хук регистрации пользователя

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

Пример кода для wporg.ru

function wporg_restrict_email_domains_registration( $errors, $sanitized_user_login, $user_email ) {
    // Список запрещённых доменов
    $blocked_domains = array('spamdomain.com', 'tempmail.net', 'baddomain.org');

    $email_domain = substr( strrchr( $user_email, '@' ), 1 );

    if ( in_array( strtolower( $email_domain ), $blocked_domains ) ) {
        $errors->add( 'domain_blocked', __( 'Регистрация с данного домена электронной почты запрещена.' ) );
    }

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

В этом коде мы определяем массив $blocked_domains, в котором перечисляем домены, с которых регистрация запрещена. Функция получает домен из email и проверяет, есть ли он в списке. Если да — добавляет ошибку, и пользователь не сможет зарегистрироваться.

Как расширить функционал — использовать регулярные выражения и исключения

Если нужна более гибкая проверка, например, блокировать все субдомены определённого домена или наоборот разрешить конкретные поддомены, можно использовать регулярные выражения. Пример:

function wporg_restrict_email_domains_regex( $errors, $sanitized_user_login, $user_email ) {
    // Запретить все домены вида tempmail.*
    if ( preg_match('/@tempmail\./i', $user_email ) ) {
        $errors->add( 'domain_blocked', __( 'Регистрация с данного домена электронной почты запрещена.' ) );
    }

    // Разрешить, например, mail.tempmail.com, заблокировать остальные
    // Здесь можно добавить дополнительные правила

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

Использование плагинов для запрета регистрации по доменам email

Если вы предпочитаете использовать готовые решения, есть несколько плагинов, которые позволяют настроить ограничения регистрации по email:

Настройка таких плагинов обычно очень интуитивна: в админке в разделе настроек указываете запрещённые или разрешённые домены, и плагин автоматически обрабатывает проверки при регистрации.

Реализация запрета на регистрацию по домену email в форме регистрации с AJAX

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

Пример AJAX-проверки email

1. Добавим JavaScript для отправки AJAX-запроса при вводе email:

jQuery(document).ready(function($) {
    $('#user_email').on('blur', function() {
        var email = $(this).val();
        $.ajax({
            url: wporg_ajax_obj.ajax_url,
            type: 'POST',
            data: {
                action: 'wporg_check_email_domain',
                email: email
            },
            success: function(response) {
                if (!response.success) {
                    alert(response.data.message);
                    $('#user_email').val('');
                }
            }
        });
    });
});

2. В functions.php добавим обработчик AJAX:

function wporg_ajax_check_email_domain() {
    if ( ! isset( $_POST['email'] ) ) {
        wp_send_json_error( array( 'message' => 'Email не передан.' ) );
    }

    $email = sanitize_email( $_POST['email'] );
    $blocked_domains = array('spamdomain.com', 'tempmail.net', 'baddomain.org');
    $email_domain = substr( strrchr( $email, '@' ), 1 );

    if ( in_array( strtolower( $email_domain ), $blocked_domains ) ) {
        wp_send_json_error( array( 'message' => 'Регистрация с данного домена электронной почты запрещена.' ) );
    }

    wp_send_json_success();
}
add_action( 'wp_ajax_wporg_check_email_domain', 'wporg_ajax_check_email_domain' );
add_action( 'wp_ajax_nopriv_wporg_check_email_domain', 'wporg_ajax_check_email_domain' );

3. Не забудьте локализовать скрипт в PHP, чтобы передать URL для AJAX:

function wporg_enqueue_scripts() {
    wp_enqueue_script( 'wporg-registration', get_template_directory_uri() . '/js/registration.js', array('jquery'), null, true );
    wp_localize_script( 'wporg-registration', 'wporg_ajax_obj', array(
        'ajax_url' => admin_url( 'admin-ajax.php' )
    ));
}
add_action( 'wp_enqueue_scripts', 'wporg_enqueue_scripts' );

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

Советы по ведению списка запрещённых доменов и его обновлению

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

Кроме того, если вы используете плагин Clearfy Pro, там уже есть встроенные инструменты для управления регистрацией и фильтрации email, что упрощает задачу.

Заключение

Запрет регистрации по доменам email в WordPress — эффективный способ борьбы со спамом и нежелательными пользователями. Наиболее гибкий и контролируемый вариант — добавление собственного кода с использованием хука registration_errors. Для быстрого внедрения подойдут специализированные плагины, включая Clearfy Pro с расширенными возможностями. А реализация проверки email через AJAX улучшит UX и снизит нагрузку на сервер.

Используйте приведённые примеры и настраивайте их под свои задачи — и ваш сайт на WordPress станет надёжнее и безопаснее.

Как использовать WP-Cron для автоматического удаления старых записей в WordPress
23.04.2026
Как создать настройку автообновления темы WordPress через код
25.02.2026
Как найти и убрать дубли страниц в WordPress без поломки индексации
26.08.2026
Как использовать WP-Cron для удаления неактивных пользователей в WordPress
30.07.2026
Как найти и устранить canonical-ошибки в WordPress
29.08.2026
×
-15%
на премиум-тему
Reboot

Создай сайт мечты
на WordPress!

Купить со скидкой »