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

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

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

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

  • Рост базы данных. Чем больше пользователей — тем больше записей хранится в таблицах wp_users и wp_usermeta. Это замедляет запросы и увеличивает размер бэкапов.
  • Безопасность. Заброшенные аккаунты слабо защищены, особенно если пароли устарели или скомпрометированы.
  • Администрирование. Труднее вести аналитику и сегментацию аудитории, когда в системе много неактивных пользователей.

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

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

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

Сохранение даты последнего входа через хук wp_login

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

function wpchecker_save_last_login($user_login, $user) {
    update_user_meta($user->ID, 'last_login', current_time('timestamp'));
}
add_action('wp_login', 'wpchecker_save_last_login', 10, 2);

Этот код нужно добавить в файл functions.php вашей темы или в кастомный плагин.

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

Автоматическое удаление пользователей, не заходивших более 6 месяцев

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

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

function wpchecker_delete_inactive_users() {
    $six_months_ago = strtotime('-6 months');

    $args = array(
        'meta_key'     => 'last_login',
        'meta_value'   => $six_months_ago,
        'meta_compare' => '<',
        'fields'       => 'ID',
        'number'       => 100, // лимит удаления за один запуск
        'exclude'      => array(1), // исключить администратора с ID=1
    );

    $users = get_users($args);

    foreach ($users as $user_id) {
        wp_delete_user($user_id);
    }
}

if (!wp_next_scheduled('wpchecker_cron_delete_inactive_users')) {
    wp_schedule_event(time(), 'daily', 'wpchecker_cron_delete_inactive_users');
}
add_action('wpchecker_cron_delete_inactive_users', 'wpchecker_delete_inactive_users');

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

Отладка и безопасность

Перед внедрением на боевой сайт рекомендуется:

  • Создать резервную копию базы данных.
  • Проверить работу кода на тестовом сайте.
  • Добавить логи для отслеживания удалённых пользователей, например, через функцию error_log или запись в отдельный файл.

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

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

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

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

Расширение функционала: уведомление пользователей перед удалением

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

Пример кода для отправки email за неделю до удаления

function wpchecker_notify_inactive_users() {
    $threshold = strtotime('-5 months 23 days'); // за 7 дней до удаления

    $args = array(
        'meta_key'     => 'last_login',
        'meta_value'   => $threshold,
        'meta_compare' => '<',
        'fields'       => 'all',
        'number'       => 100,
    );

    $users = get_users($args);

    foreach ($users as $user) {
        $last_login = get_user_meta($user->ID, 'last_login', true);
        $days_inactive = floor((time() - $last_login) / DAY_IN_SECONDS);

        $to = $user->user_email;
        $subject = 'Уведомление об удалении вашего аккаунта';
        $message = "Здравствуйте, {$user->display_name}!\n\n";
        $message .= "Ваш аккаунт не использовался в течение {$days_inactive} дней. " .
                    "Через 7 дней он будет удалён автоматически, если вы не войдёте на сайт.\n";
        $message .= "Если вы хотите сохранить аккаунт, просто войдите в систему.\n\n";
        $message .= "С уважением, команда сайта.";

        wp_mail($to, $subject, $message);
    }
}

if (!wp_next_scheduled('wpchecker_cron_notify_inactive_users')) {
    wp_schedule_event(time(), 'daily', 'wpchecker_cron_notify_inactive_users');
}
add_action('wpchecker_cron_notify_inactive_users', 'wpchecker_notify_inactive_users');

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

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

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

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

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

Выводы

Автоматическое удаление неактивных пользователей — важная задача для поддержания чистоты и безопасности WordPress-сайта. С помощью простого кода и планировщика задач cron вы можете настроить регулярное удаление, а уведомления помогут избежать случайных потерь клиентов. Если вы предпочитаете готовые решения, обратите внимание на плагины Inactive User Deleter и WP Bulk Delete.

WooCommerce: добавление и сохранение дополнительных полей в формах регистрации и заказов
03.06.2026
Как автоматически удалять неактивные пользовательские аккаунты в WordPress
24.03.2026
Как использовать WPChecker для поиска и устранения проблем производительности WordPress
14.04.2026
Как создать собственный шорткод с атрибутами в WordPress
20.02.2026
Как удалить старые и неиспользуемые изображения в WordPress для оптимизации сайта
24.02.2026