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

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

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

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

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

  • Защитить сайт от спама и брутфорса
  • Контролировать аудиторию
  • Поддерживать чистоту базы данных пользователей
  • Улучшить безопасность и качество пользователей

Ограничение регистрации по домену email

Частая задача — разрешить регистрацию только с корпоративных или определенных почтовых доменов, например, @wptips.ru. Для этого можно использовать хук registration_errors, который срабатывает при регистрации и позволяет добавить собственные проверки.

add_filter('registration_errors', 'wptips_restrict_email_domain', 10, 3);
function wptips_restrict_email_domain($errors, $sanitized_user_login, $user_email) {
    $allowed_domains = array('wptips.ru', 'example.com'); // Разрешенные домены
    $email_domain = substr(strrchr($user_email, '@'), 1);
    if (!in_array($email_domain, $allowed_domains)) {
        $errors->add('domain_restriction', __('Регистрация разрешена только с корпоративных адресов.'));
    }
    return $errors;
}

Этот код нужно добавить в файл functions.php вашей темы или в отдельный плагин. При попытке зарегистрировать пользователя с другого домена появится ошибка.

Пояснения к коду

Мы получаем доменную часть email, затем сверяем с массивом разрешенных доменов. Если домен не совпадает, добавляем ошибку в объект $errors, и регистрация не пройдет.

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

Чтобы избежать массовой регистрации с одного IP (часто делают боты), можно фиксировать количество регистраций и блокировать, если лимит превышен.

add_filter('registration_errors', 'wptips_limit_registrations_per_ip', 10, 3);
function wptips_limit_registrations_per_ip($errors, $sanitized_user_login, $user_email) {
    $ip = $_SERVER['REMOTE_ADDR'];
    $max_registrations = 3; // Максимум регистраций с одного IP

    global $wpdb;
    $count = $wpdb->get_var($wpdb->prepare(
        "SELECT COUNT(*) FROM $wpdb->usermeta WHERE meta_key='registration_ip' AND meta_value=%s",
        $ip
    ));

    if ($count >= $max_registrations) {
        $errors->add('ip_limit', __('Достигнут лимит регистраций с вашего IP.'));
    }
    return $errors;
}

add_action('user_register', 'wptips_save_registration_ip');
function wptips_save_registration_ip($user_id) {
    $ip = $_SERVER['REMOTE_ADDR'];
    update_user_meta($user_id, 'registration_ip', $ip);
}

Код считает количество пользователей, зарегистрированных с IP, и не позволяет создавать новых, если лимит достигнут.

Плагины для ограничения регистрации пользователей

Если хотите готовое решение с UI и расширенными настройками, рассмотрите следующие плагины:

  • WP Restrict Registration — ограничение по доменам email, капча, проверка IP.
  • New User Approve — регистрация с одобрением администратора.
  • Stop Spammers — защита от спама, блокировка по IP и другим параметрам.

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

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

add_filter('wp_authenticate_user', 'wptips_restrict_unapproved_users', 10, 2);
function wptips_restrict_unapproved_users($user, $password) {
    $approved = get_user_meta($user->ID, 'approved', true);
    if (!$approved) {
        return new WP_Error('not_approved', __('Ваш аккаунт еще не одобрен.')); 
    }
    return $user;
}

add_action('user_register', 'wptips_set_user_unapproved');
function wptips_set_user_unapproved($user_id) {
    update_user_meta($user_id, 'approved', 0);
    // Здесь можно добавить отправку письма админу о новой регистрации
}

Таким образом, пользователь не сможет войти, пока админ вручную не установит мета-ключ approved в 1.

Резюме и рекомендации

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

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

Автоматическое создание скидки на первую покупку в WooCommerce через код
30.05.2026
Как сделать вывод главных категорий в WordPress с помощью кода
06.04.2026
Как создать динамические формы в WordPress с помощью REST API
27.01.2026
Как удалить или изменить slug таксономии в WordPress без редиректа
23.02.2026
Как удалить заблокированные или замороженные учётные записи пользователей в WordPress
18.05.2026