Как удалить и заблокировать подозрительных пользователей в WordPress

Диагностика подозрительной активности пользователей в WordPress

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

  • Пользователи без аватара и с пустыми или странными данными в профиле
  • Массовая регистрация с похожими email-адресами или IP
  • Повторяющиеся попытки входа с разных IP
  • Комментарии с частыми ссылками или спамом

Для начальной диагностики рекомендую использовать стандартные средства WordPress и плагины типа Clearfy для анализа активности пользователей и очистки сайта от мусора.

Пошаговое решение: удаление и блокировка подозрительных пользователей через код

1. Получение списка подозрительных пользователей по email или роли

function get_suspicious_users() {
    $args = [
        'role' => 'subscriber', // или другая роль, если нужно
        'meta_query' => [
            'relation' => 'OR',
            [
                'key' => 'last_login',
                'compare' => 'NOT EXISTS',
            ],
            [
                'key' => 'suspicious_flag',
                'value' => '1',
                'compare' => '=',
            ],
        ],
        'number' => 100,
    ];
    return get_users($args);
}

Здесь мы выбираем пользователей, у которых нет данных о последнем входе или которые помечены как подозрительные.

2. Удаление пользователей по ID

function delete_users_by_ids(array $user_ids) {
    foreach ($user_ids as $user_id) {
        require_once ABSPATH . 'wp-admin/includes/user.php';
        wp_delete_user($user_id);
    }
}

3. Блокировка регистрации с подозрительных IP/Email через хук registration_errors

add_filter('registration_errors', function($errors, $sanitized_user_login, $user_email) {
    $blocked_domains = ['mailinator.com', 'tempmail.com'];
    $email_domain = substr(strrchr($user_email, '@'), 1);
    if (in_array($email_domain, $blocked_domains)) {
        $errors->add('blocked_email_domain', __('Регистрация с этого почтового домена запрещена.'));
    }
    return $errors;
}, 10, 3);

4. Автоматическое помечание пользователей с подозрительной активностью

add_action('wp_login', function($user_login, $user) {
    $suspicious_emails = ['bot@example.com', 'spam@example.com'];
    if (in_array($user->user_email, $suspicious_emails)) {
        update_user_meta($user->ID, 'suspicious_flag', '1');
    }
}, 10, 2);

Проверка результата после внедрения

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

  1. В админке WordPress перейдите в раздел «Пользователи» и проверьте, что подозрительные аккаунты отсутствуют.
  2. Попробуйте зарегистрироваться с email на заблокированном домене, чтобы убедиться, что регистрация запрещена.
  3. Проверьте, что новые подозрительные активности автоматически помечаются, например, через просмотр пользовательских мета-данных.

Частые ошибки и как их исправить

  • Ошибка: Пользователи не удаляются.
    Причина: Отсутствие подключения файла wp-admin/includes/user.php перед вызовом wp_delete_user().
    Решение: Добавьте require_once ABSPATH . 'wp-admin/includes/user.php'; перед удалением.
  • Ошибка: Фильтр registration_errors не срабатывает.
    Причина: Приоритет хука установлен слишком низко или фильтр добавлен после регистрации.
    Решение: Добавьте фильтр на самом раннем этапе с приоритетом 10.
  • Ошибка: Пользователи не помечаются автоматически.
    Причина: Хук wp_login не получает нужных параметров.
    Решение: Убедитесь, что функция принимает два аргумента и добавьте приоритет и количество аргументов: add_action('wp_login', 'func', 10, 2);

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

  • Используйте плагины для ограничения количества попыток входа, например, Clearfy, чтобы снизить риск брутфорс-атак.
  • Регулярно очищайте базу данных от неактивных и подозрительных пользователей через WP-CLI или автоматизированные скрипты.
  • Для массового удаления пользователей лучше использовать WP-CLI, это быстрее и безопаснее, чем через панель администратора.
  • Добавляйте мета-данные с флагами подозрительности, чтобы легко фильтровать и управлять такими пользователями.

Сравнение способов удаления и блокировки подозрительных пользователей

МетодПлюсыМинусы
Ручное удаление через админкуПросто, без кодаМедленно, неэффективно при большом количестве
Удаление через код (wp_delete_user)Автоматизация, быстрое удалениеТребует знаний PHP и доступа к файлам
Блокировка регистрации через фильтр registration_errorsПрекращает проблемы на входеНе удаляет уже существующих пользователей
Использование плагинов (Clearfy и др.)Широкий функционал, безопасностьМожет нагружать сайт
Как отключить автообновление корзины в WooCommerce без плагинов
26.04.2026
Как создать собственный плагин WordPress с настройками
10.11.2025
Как установить ограничение на размер файлов при загрузке в WordPress
10.01.2026
Автоматическое удаление возвращённых и отменённых заказов WooCommerce
02.07.2026
Как удалить пустые вариативные товары WooCommerce с помощью кода
30.05.2026