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

|

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

Почему нужны ограничения регистрации в WordPress

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

Рассмотрим разные подходы с примерами кода и плагинами.

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

Одним из самых популярных способов ограничения является фильтрация email по домену. Например, разрешить регистрацию только с корпоративных адресов @example.com.

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

function wporg_restrict_registration_email_domains( $errors, $sanitized_user_login, $user_email ) {
    $allowed_domains = array('example.com', 'wporg.ru'); // разрешённые домены
    $email_domain = substr(strrchr($user_email, '@'), 1);

    if ( ! in_array( strtolower($email_domain), $allowed_domains ) ) {
        $errors->add( 'domain_error', 'Регистрация разрешена только с корпоративных адресов email.' );
    }
    return $errors;
}
add_filter( 'registration_errors', 'wporg_restrict_registration_email_domains', 10, 3 );

Этот код проверит адрес и не позволит зарегистрироваться пользователям с другими доменами. Можно легко расширить список или сделать его настраиваемым через опции плагина.

Плагины для ограничения по email

Если хотите готовое решение с интерфейсом, обратите внимание на плагин Restrict User Signups. Он позволяет настроить список разрешённых доменов, блокировать временные почты и управлять регистрацией.

Добавление капчи на страницу регистрации

Капча — отличный метод борьбы со спам-ботами, которые регистрируются автоматически. Можно использовать Google reCAPTCHA или другие сервисы.

Для интеграции reCAPTCHA v2 на страницу регистрации добавим следующий код:

function wporg_add_recaptcha_to_registration() {
    ?>
    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
    <div class="g-recaptcha" data-sitekey="ВАШ_SITE_KEY"></div>
    <?php
}
add_action( 'register_form', 'wporg_add_recaptcha_to_registration' );

function wporg_verify_recaptcha_on_registration( $errors, $sanitized_user_login, $user_email ) {
    if ( empty( $_POST['g-recaptcha-response'] ) || ! wporg_recaptcha_verify( $_POST['g-recaptcha-response'] ) ) {
        $errors->add( 'recaptcha_error', 'Пожалуйста, подтвердите, что вы не робот.' );
    }
    return $errors;
}
add_filter( 'registration_errors', 'wporg_verify_recaptcha_on_registration', 10, 3 );

function wporg_recaptcha_verify( $response ) {
    $secret = 'ВАШ_SECRET_KEY';
    $remoteip = $_SERVER['REMOTE_ADDR'];
    $verify = wp_remote_post( 'https://www.google.com/recaptcha/api/siteverify', array(
        'body' => array(
            'secret' => $secret,
            'response' => $response,
            'remoteip' => $remoteip
        )
    ) );
    $json = json_decode( wp_remote_retrieve_body( $verify ) );
    return $json->success;
}

После настройки ключей Google reCAPTCHA и добавления этого кода на сайт регистрация будет защищена от ботов.

Плагин с капчей на регистрацию

Для удобства можно использовать Clearfy Pro — в нём есть встроенные функции защиты регистрации, включая капчу и ограничения по IP.

Блокировка регистрации по IP и геолокации

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

Пример кода для блокировки по IP:

function wporg_block_registration_by_ip( $errors, $sanitized_user_login, $user_email ) {
    $blocked_ips = array('123.456.789.0', '111.222.333.444');
    $user_ip = $_SERVER['REMOTE_ADDR'];

    if ( in_array( $user_ip, $blocked_ips ) ) {
        $errors->add( 'ip_blocked', 'Регистрация с вашего IP-адреса запрещена.' );
    }
    return $errors;
}
add_filter( 'registration_errors', 'wporg_block_registration_by_ip', 10, 3 );

Для геоблокировки можно интегрировать API определения геолокации и блокировать регионы, откуда не желательны пользователи.

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

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

Пример простой проверки приглашения:

function wporg_check_invitation_code( $errors, $sanitized_user_login, $user_email ) {
    if ( empty( $_POST['invitation_code'] ) || $_POST['invitation_code'] !== 'MY_SECRET_CODE' ) {
        $errors->add( 'invitation_error', 'Для регистрации необходим действующий код приглашения.' );
    }
    return $errors;
}
add_filter( 'registration_errors', 'wporg_check_invitation_code', 10, 3 );

function wporg_add_invitation_field() {
    ?>
    <p>
        <label for="invitation_code">Код приглашения<br />
        <input type="text" name="invitation_code" id="invitation_code" class="input" value="<?php echo esc_attr( wp_unslash( $_POST['invitation_code'] ?? '' ) ); ?>" size="25" /></label>
    </p>
    <?php
}
add_action( 'register_form', 'wporg_add_invitation_field' );

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

Практические советы и подборка плагинов для ограничения регистрации

Подытожим полезные инструменты и советы:

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

Как автоматизировать отзывы в WordPress с помощью Expert Review
16.04.2026
Как использовать хуки в WordPress для автоматизации задач
30.11.2025
Автоматическое удаление неиспользуемых мета данных в WordPress: практические решения и примеры кода
12.03.2026
Как автоматически отключить неиспользуемые плагины в WordPress
20.06.2026
Как удалить все записи определенного автора в WordPress: практические методы и примеры кода
15.02.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше