Как удалить заблокированные или неактивные пользователи в WordPress с помощью кода

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

Почему важно удалять неактивных и заблокированных пользователей

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

Удаление таких пользователей позволяет:

  • Снизить нагрузку на базу данных;
  • Уменьшить риск взлома через старые учетные записи;
  • Упростить управление пользователями;
  • Повысить безопасность сайта.

Рассмотрим, как это сделать через код, без использования сторонних плагинов.

Определяем критерии для удаления пользователей

Как узнать, кто неактивен

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

Добавьте в functions.php вашей темы или в отдельный плагин следующий код:

function wpnews_save_last_login($user_login, $user) {
    update_user_meta($user->ID, 'wpnews_last_login', current_time('mysql'));
}
add_action('wp_login', 'wpnews_save_last_login', 10, 2);

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

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

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

В примерах ниже будем считать, что заблокированные пользователи имеют роль blocked.

Пример функции для удаления неактивных пользователей

Допустим, мы хотим удалить всех пользователей, которые не заходили на сайт более 180 дней. Используем следующий код:

function wpnews_delete_inactive_users($days = 180) {
    $args = [
        'meta_key' => 'wpnews_last_login',
        'meta_value' => date('Y-m-d H:i:s', strtotime('-' . $days . ' days')),
        'meta_compare' => '<=',
        'fields' => 'ID'
    ];
    $user_query = new WP_User_Query($args);
    $users_to_delete = $user_query->get_results();

    if (empty($users_to_delete)) {
        return 'Неактивных пользователей не найдено';
    }

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

    return count($users_to_delete) . ' неактивных пользователей удалено';
}

Вызвать функцию можно так:

echo wpnews_delete_inactive_users(180);

Она удалит пользователей с датой последнего входа старше 180 дней.

Пример функции для удаления заблокированных пользователей по роли

Если на вашем сайте заблокированным пользователям присвоена роль blocked, то для удаления таких пользователей используйте следующий код:

function wpnews_delete_blocked_users() {
    $blocked_users = get_users(['role' => 'blocked', 'fields' => 'ID']);

    if (empty($blocked_users)) {
        return 'Заблокированных пользователей не найдено';
    }

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

    return count($blocked_users) . ' заблокированных пользователей удалено';
}

Вызвать функцию просто:

echo wpnews_delete_blocked_users();

Рекомендации по безопасности и резервному копированию

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

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

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

Использование плагинов для анализа и удаления неактивных пользователей

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

Для интеграции с сервисами WPSHOP, такими как Clearfy Pro, можно дополнительно оптимизировать работу пользователей и безопасность сайта.

Как создать динамические таблицы в WordPress с помощью шорткодов
05.01.2026
Как использовать Hooks в WordPress для расширения функциональности
12.11.2025
Как использовать метод wpnews_detect_user_agent для определения User Agent в WordPress
17.12.2025
Как удалить заблокированные или неактивные пользователи в WordPress с помощью кода
27.12.2025
Как отключить AJAX в корзине WooCommerce и почему это может понадобиться
14.12.2025