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

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

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

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

Регулярное очищение списка пользователей позволяет:

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

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

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

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

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

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

После добавления этого кода при каждом входе будет обновляться значение мета-поля wptask_last_login.

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

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

Регистрация и запуск задачи

Добавим функцию для удаления и зарегистрируем её в cron:

function wptask_delete_inactive_users() {
    $threshold = strtotime('-6 months'); // Порог неактивности
    $users = get_users(array(
        'meta_key' => 'wptask_last_login',
        'meta_compare' => '<',
        'meta_value' => date('Y-m-d H:i:s', $threshold),
        'fields' => 'ID',
    ));

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

// Запуск ежедневно
if (!wp_next_scheduled('wptask_daily_delete_inactive_users')) {
    wp_schedule_event(time(), 'daily', 'wptask_daily_delete_inactive_users');
}
add_action('wptask_daily_delete_inactive_users', 'wptask_delete_inactive_users');

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

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

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

  • Inactive User Deleter — позволяет настроить удаление пользователей, неактивных определённое время. Есть возможность исключать определённые роли.
  • Remove Inactive Users — простой плагин с опциями по удалению или деактивации неактивных аккаунтов.
  • Clearfy Pro (https://wpshop.ru/plugins/clearfy-pro/?utm_source=wptask.ru&utm_medium=article&utm_campaign=avtomaticheskoe-udalenie-neaktivnyh-polzovatelej-v-wordpress) — мощный инструмент для оптимизации и безопасности, в том числе содержит функции управления пользователями.

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

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

Если у вас есть доступ к командной строке, можно использовать WP-CLI для управления пользователями. Например, чтобы удалить пользователей, не заходивших более 6 месяцев, можно написать кастомный скрипт:

wp user list --field=ID --meta_key=wptask_last_login --meta_compare='<' --meta_value='2023-01-01' | xargs -n1 wp user delete --yes

Обратите внимание, что дата 2023-01-01 — это пример, её нужно подставить исходя из текущей даты минус 6 месяцев.

Рекомендации и предосторожности

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

Также уделите внимание исключению из удаления администраторов и важных аккаунтов.

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

function wptask_delete_inactive_users() {
    $threshold = strtotime('-6 months');
    $users = get_users(array(
        'meta_key' => 'wptask_last_login',
        'meta_compare' => '<',
        'meta_value' => date('Y-m-d H:i:s', $threshold),
        'fields' => array('ID', 'roles'),
    ));

    foreach ($users as $user) {
        if (in_array('administrator', $user->roles)) {
            continue; // не удаляем админов
        }
        require_once(ABSPATH . 'wp-admin/includes/user.php');
        wp_delete_user($user->ID);
    }
}

Заключение

Автоматическое удаление неактивных пользователей — важная задача для поддержания безопасности и производительности WordPress-сайта. Используя простой код и плагины, вы сможете эффективно управлять базой пользователей, не допуская «засорения» и угроз безопасности. Обязательно тестируйте решения на тестовом сайте и делайте резервные копии.

Как создать автоматический импорт отзывов в WordPress
10.02.2026
Как отключить XML-RPC в WordPress для повышения безопасности
27.01.2026
Автоматическое закрытие открытых тикетов поддержки в WordPress
22.02.2026
Как создать собственный shortcode в WordPress с примером кода
05.11.2025
Как изменить логин пользователя в WordPress без переустановки и регистрации
26.12.2025