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

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

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

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

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

Как определить неактивного пользователя: критерии и ограничения

Для начала нужно определиться, кого считать неактивным. Обычно ориентируются на дату последнего входа (логина) пользователя в систему.

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

Добавляем сохранение даты последнего входа

Для этого используем хук wp_login, который срабатывает при каждом успешном входе пользователя:

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

Этот код обновит мета-поле wpbono_last_login с текущей датой и временем при каждом входе пользователя.

Как проверить дату последнего входа

Чтобы получить дату последнего логина, используйте:

$last_login = get_user_meta($user_id, 'wpbono_last_login', true);

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

Если у вас есть доступ к консоли сервера, можно использовать WP-CLI — мощный инструмент для управления WordPress из командной строки.

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

wp user list --field=ID --meta_key=wpbono_last_login --meta_compare='<=' --meta_value='2023-01-01 00:00:00' | xargs -I % wp user delete % --yes

Здесь нужно заменить дату 2023-01-01 00:00:00 на актуальную дату, вычисленную как сегодня минус 180 дней.

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

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

Ниже пример функции, которую можно запускать по крону (WP-Cron) или вручную из админки:

function wpbono_delete_inactive_users($days = 180) {
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . intval($days) . ' days'));

    $args = [
        'meta_key' => 'wpbono_last_login',
        'meta_value' => $date_threshold,
        'meta_compare' => '<=',
        'fields' => 'ID',
        'number' => -1,
        'exclude' => [1], // исключаем администратора с ID=1
    ];

    $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);
        }
    }
}

Для запуска функции можно использовать хук крон, например, раз в неделю:

if (!wp_next_scheduled('wpbono_weekly_cleanup')) {
    wp_schedule_event(time(), 'weekly', 'wpbono_weekly_cleanup');
}
add_action('wpbono_weekly_cleanup', function() {
    wpbono_delete_inactive_users(180);
});

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

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

  • Inactive User Deleter — плагин позволяет настроить удаление пользователей, которые не заходили на сайт за определенный период.
  • WP Bulk Delete — универсальный инструмент для массового удаления записей и пользователей с фильтрами.

Эти плагины имеют удобные интерфейсы для настройки и могут запускаться по расписанию.

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

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

Рекомендуется добавить проверку ролей перед удалением:

$user = get_userdata($user_id);
if (in_array('administrator', $user->roles)) {
    continue; // пропускаем админов
}

Интеграция с плагином Clearfy Pro для безопасности и оптимизации

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

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

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

  • Добавить сохранение даты последнего входа;
  • Определить критерий неактивности;
  • Создать функцию удаления с учетом ролей;
  • Настроить запуск по расписанию с WP-Cron или WP-CLI;
  • Рассмотреть использование готовых плагинов для удобства.

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

Как использовать AJAX в WordPress для объявлений без перезагрузки страницы
03.02.2026
Как отключить автовключение видео в WordPress: практические решения и примеры
25.12.2025
WooCommerce: как запретить повторное создание заказа при наличии активного
03.06.2026
WooCommerce: как исключить определённые товары из автоматических скидок
30.05.2026
Как изменить вывод метаданных в WordPress без изменения темы
24.01.2026