Как автоматически удалять неактивных пользователей в WordPress

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

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

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

  • Загромождение базы данных. Большое количество записей в таблице пользователей ухудшает производительность запросов.
  • Увеличение риска безопасности. Заброшенные аккаунты могут быть взломаны и использованы для атак.
  • Сложности в администрировании. Труднее управлять реальными пользователями и сегментировать аудиторию.

Удаление таких аккаунтов помогает поддерживать систему в чистоте и безопасности.

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

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

Добавление мета-поля последнего входа пользователя

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

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

Этот хук wp_login срабатывает при успешном входе пользователя и обновляет мета-данные wpcontent_last_login.

Автоматическое удаление неактивных пользователей с помощью собственного кода

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

function wpcontent_delete_inactive_users($days_inactive = 180) {
    $args = array(
        'meta_key' => 'wpcontent_last_login',
        'meta_value' => date('Y-m-d H:i:s', strtotime('-' . $days_inactive . ' days')),
        'meta_compare' => '<',
        'fields' => 'ID',
        'number' => 1000
    );
    $user_query = new WP_User_Query($args);
    $users_to_delete = $user_query->get_results();

    if (!empty($users_to_delete)) {
        foreach ($users_to_delete as $user_id) {
            wp_delete_user($user_id);
        }
    }
}

// Пример вызова:
// wpcontent_delete_inactive_users(180); // удалит пользователей без логинов 180+ дней

Функцию можно запускать вручную или назначить на планировщик WP-Cron для автоматизации.

Настройка WP-Cron для регулярного удаления

Добавьте в файл functions.php или в плагин следующий код для еженедельного запуска удаления:

if (!wp_next_scheduled('wpcontent_weekly_delete_inactive_users')) {
    wp_schedule_event(time(), 'weekly', 'wpcontent_weekly_delete_inactive_users');
}

add_action('wpcontent_weekly_delete_inactive_users', function() {
    wpcontent_delete_inactive_users(180); // 180 дней неактивности
});

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

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

Если не хотите писать код, можно использовать готовые решения:

  • Inactive User Deleter — плагин, который автоматически удаляет пользователей, неактивных заданное количество дней. Умеет фильтровать по ролям.
  • WP Bulk Delete — мощный инструмент для массового удаления пользователей по различным критериям, включая дату последнего входа.
  • Clearfy Pro (https://wpshop.ru/clearfy-pro/?utm_source=wpcontent.ru&utm_medium=article&utm_campaign=kak-avtomaticheski-udaljat-neaktivnye-polzovateli-v-wordpress) — помимо множества оптимизаций, содержит модуль для управления пользователями и очистки базы.

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

Особенности и рекомендации

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

function wpcontent_delete_inactive_users($days_inactive = 180) {
    $args = array(
        'meta_key' => 'wpcontent_last_login',
        'meta_value' => date('Y-m-d H:i:s', strtotime('-' . $days_inactive . ' days')),
        'meta_compare' => '<',
        'fields' => 'ID',
        'number' => 1000,
        'role__not_in' => array('administrator', 'editor')
    );
    $user_query = new WP_User_Query($args);
    $users_to_delete = $user_query->get_results();

    if (!empty($users_to_delete)) {
        foreach ($users_to_delete as $user_id) {
            wp_delete_user($user_id);
        }
    }
}

Так вы обезопасите критичные аккаунты.

Выводы

Автоматическое удаление неактивных пользователей — важный элемент поддержки здоровья сайта на WordPress. Если реализовать отслеживание последнего входа и настроить регулярное удаление, база данных будет работать быстрее, а риск безопасности снизится. Можно использовать как собственные решения на PHP, так и популярные плагины, например, Clearfy Pro, который поможет комплексно оптимизировать сайт.

Как использовать фильтр wp_content для изменения пути медиафайлов в WordPress
29.01.2026
Как создать дерево категорий в WordPress с помощью кода
19.11.2025
Как автоматически оптимизировать картинки в WordPress при загрузке
04.02.2026
Как изменить пути к медиафайлам в WordPress без потери функциональности
25.02.2026
Как использовать фильтр wp_content для изменения пути медиаданных в WordPress
08.04.2026