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

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

Почему важно ограничивать регистрацию пользователей в WordPress

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

Ограничения позволяют:

  • Запретить регистрацию с определённых доменов электронной почты;
  • Ввести капчу для проверки человека;
  • Ограничить число регистраций с одного IP-адреса;
  • Требовать подтверждение по email;
  • Добавлять модерацию новых пользователей.

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

Ограничение регистрации с помощью плагинов

Плагин WPBruiser Anti-Spam

WPBruiser – мощный антиспам плагин, который блокирует автоматические регистрации без использования капчи. Он автоматически распознаёт и блокирует ботов, не снижая удобство для реальных пользователей.

Чтобы установить плагин:

  1. Перейдите в админку WordPress → Плагины → Добавить новый.
  2. Найдите «WPBruiser» и установите его.
  3. Активируйте плагин и настройте параметры.

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

Плагин Restrict User Registrations

Этот плагин позволяет задать whitelist или blacklist для email-адресов, доменов, а также ограничить регистрацию по IP. Он также поддерживает интеграцию с капчей и подтверждением email.

Пример настройки: запретить регистрацию с доменов, например, @spamdomain.com.

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

Как запретить регистрацию с определённых email-доменов через код

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

function wppuzzle_block_email_domains($errors, $sanitized_user_login, $user_email) {
    $blocked_domains = array('spamdomain.com', 'baddomain.net');
    $email_domain = substr(strrchr($user_email, '@'), 1);

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

Этот код защищает ваш сайт от регистраций с нежелательных доменов. Список $blocked_domains можно расширить по вашему усмотрению.

Добавление капчи на страницу регистрации для защиты от ботов

Капча — один из самых эффективных способов защитить регистрацию от автоматических ботов. Одним из популярных решений является плагин Clearfy Pro, который включает защиту от спама и капчу на формы сайта.

Другой бесплатный вариант — плагин Google Captcha (reCAPTCHA) by BestWebSoft, позволяющий легко интегрировать reCAPTCHA на страницу регистрации.

Ограничение количества регистраций с одного IP-адреса

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

Пример кода для ограничения одной регистрации с IP за час:

function wppuzzle_limit_registrations_per_ip() {
    global $wpdb;
    $ip = $_SERVER['REMOTE_ADDR'];
    $time_limit = time() - 3600; // 1 час назад

    $count = $wpdb->get_var($wpdb->prepare(
        "SELECT COUNT(*) FROM $wpdb->users WHERE user_registered > %s AND user_login IN (
            SELECT user_login FROM $wpdb->usermeta WHERE meta_key = 'registration_ip' AND meta_value = %s
        )",
        date('Y-m-d H:i:s', $time_limit),
        $ip
    ));

    if ($count > 0) {
        wp_die('Вы уже регистрировались с вашего IP в течение последнего часа. Пожалуйста, попробуйте позже.');
    }
}
add_action('register_post', 'wppuzzle_limit_registrations_per_ip');

function wppuzzle_save_registration_ip($user_id) {
    if (isset($_SERVER['REMOTE_ADDR'])) {
        update_user_meta($user_id, 'registration_ip', $_SERVER['REMOTE_ADDR']);
    }
}
add_action('user_register', 'wppuzzle_save_registration_ip');

Этот код сохраняет IP при регистрации и проверяет, не было ли регистраций с этого IP за последний час.

Модерация новых пользователей и подтверждение email

Для повышения качества пользователей можно настроить ручную модерацию или обязательное подтверждение email. Плагин Expert Review позволяет расширить возможности управления пользователями и отзывами, включая подтверждение и проверку новых регистраций.

Также есть бесплатные плагины, например, New User Approve, которые требуют одобрения администратора для новых аккаунтов.

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

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

Для базовой защиты достаточно использовать плагины вроде WPBruiser или Restrict User Registrations. Для более глубокой интеграции можно применять написанные своими руками функции, как показано в примерах выше.

Если вы хотите получить максимально простой и функциональный комплекс защиты, советуем обратить внимание на Clearfy Pro, который объединяет в себе множество инструментов для повышения безопасности и оптимизации WordPress.

Как отключить кэширование в WordPress для определённых страниц
29.03.2026
Как создать и обновлять кастомные таблицы в WordPress с помощью wpdb
26.02.2026
Как использовать WP-Cron для автоматизации задач в WordPress
24.05.2026
Как удалить пустые метаданные termmeta таксономий в WordPress
05.04.2026
Как удалить неиспользуемые вариации товаров в WooCommerce без ошибок
01.06.2026