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

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

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

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

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

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

Однако делать это нужно аккуратно, чтобы не потерять важные аккаунты.

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

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

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

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

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

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

Самый безопасный и контролируемый способ — запускать команду удаления через WP-CLI. Ниже пример кастомной команды, которая удалит пользователей без входа более 180 дней.

Создаем WP-CLI команду

if (defined('WP_CLI') && WP_CLI) {
    class WPOnline_Delete_Inactive_Users_Command {
        public function delete($args, $assoc_args) {
            $days = isset($assoc_args['days']) ? intval($assoc_args['days']) : 180;
            $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

            $args = [
                'meta_key' => 'wponline_last_login',
                'meta_value' => $date_threshold,
                'meta_compare' => '<',
                'fields' => 'ID',
                'number' => -1,
            ];

            $users = get_users($args);
            $deleted = 0;
            foreach ($users as $user_id) {
                wp_delete_user($user_id);
                $deleted++;
            }

            WP_CLI::success("Удалено {$deleted} неактивных пользователей старше {$days} дней.");
        }
    }

    WP_CLI::add_command('wponline delete_inactive_users', 'WPOnline_Delete_Inactive_Users_Command');
}

Запускать команду можно так:

wp wponline delete_inactive_users --days=180

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

Автоматизация через WP-Cron

Если вы хотите, чтобы удаление происходило автоматически, можно использовать WP-Cron для планирования задачи.

Добавляем функцию удаления и расписание

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

    $args = [
        'meta_key' => 'wponline_last_login',
        'meta_value' => $date_threshold,
        'meta_compare' => '<',
        'fields' => 'ID',
        'number' => -1,
    ];

    $users = get_users($args);
    foreach ($users as $user_id) {
        wp_delete_user($user_id);
    }
}

// Регистрируем событие при активации темы или плагина
if (!wp_next_scheduled('wponline_daily_user_cleanup')) {
    wp_schedule_event(time(), 'daily', 'wponline_daily_user_cleanup');
}

add_action('wponline_daily_user_cleanup', 'wponline_delete_inactive_users_cron');

Этот код будет запускать удаление раз в день.

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

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

  • Inactive User Deleter — автоматически удаляет пользователей по сроку неактивности;
  • WP User Manager — расширенный плагин для управления пользователями с возможностью фильтров;
  • Clearfy Pro — плагин для оптимизации WordPress, в том числе с функциями управления пользователями.

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

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

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

  • Сделайте резервную копию базы данных;
  • Исключите из удаления администраторов и важных ролей (это можно сделать, добавив условие в код);
  • Убедитесь, что дата последнего входа корректно сохраняется у всех пользователей;
  • Проведите тестирование на тестовом сайте;
  • Сообщайте пользователям о возможном удалении их аккаунта (например, через email).

Исключение администраторов из удаления

function wponline_get_inactive_users_except_admins($days = 180) {
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));
    $all_users = get_users([
        'meta_key' => 'wponline_last_login',
        'meta_value' => $date_threshold,
        'meta_compare' => '<',
        'fields' => ['ID', 'roles'],
        'number' => -1,
    ]);

    $users_to_delete = [];
    foreach ($all_users as $user) {
        if (!in_array('administrator', $user->roles)) {
            $users_to_delete[] = $user->ID;
        }
    }

    return $users_to_delete;
}

Заключение

Автоматическое удаление неактивных пользователей в WordPress — полезная практика для поддержания безопасности и производительности сайта. Сохранение даты последнего входа с помощью хуков, запуск удаления через WP-CLI или WP-Cron позволяет гибко настраивать процесс. При необходимости можно использовать готовые плагины, но кастомный код дает больше контроля.

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

Как установить собственный фильтр по пользовательским полям в WordPress
13.04.2026
Как использовать WP-CLI для управления WooCommerce
02.05.2026
WooCommerce: автоматическое изменение стоимости товаров при определённых условиях
26.05.2026
Как добавить автоматическое удаление старого контента в WordPress
01.04.2026
Как создать собственный тип записи в WordPress
24.11.2025