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

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

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

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

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

Поэтому регулярное удаление таких пользователей — необходимая практика.

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

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

  • Дата последнего входа на сайт;
  • Дата последнего опубликованного комментария;
  • Дата последней активности (если настроено отслеживание);
  • Роль пользователя (например, удалять только подписчиков);
  • Период неактивности — обычно от 6 месяцев и дольше.

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

Отслеживание последнего входа с помощью плагина WP Activity Log

Плагин WP Security Audit Log позволяет записывать события входа пользователей и многое другое. После установки он будет вести журнал активности и поможет выявить неактивных.

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

Можно добавить следующий код в functions.php вашей активной темы или в собственный плагин для сохранения даты последнего входа пользователя:

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

Этот код записывает дату и время входа в мета-поле пользователя wp7_last_login. Далее можно использовать это поле для фильтрации неактивных.

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

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

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

Пример настройки Inactive User Deleter:

  • Установите и активируйте плагин;
  • Перейдите в настройки плагина;
  • Выберите период неактивности, например, 180 дней;
  • Выберите роли пользователей для удаления (например, подписчики);
  • Запустите процесс удаления.

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

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

function wp7_delete_inactive_users() {
    $six_months_ago = date('Y-m-d H:i:s', strtotime('-6 months'));

    $args = array(
        'meta_key' => 'wp7_last_login',
        'meta_value' => $six_months_ago,
        'meta_compare' => '<',
        'fields' => 'ID',
        'role__in' => array('subscriber'), // Роли, которые нужно проверить
        'number' => 100
    );

    $user_query = new WP_User_Query($args);
    $users_to_delete = $user_query->get_results();

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

// Запуск функции по cron или вручную
// wp7_delete_inactive_users();

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

Добавление задачи в WP-Cron для регулярного удаления

Чтобы запускать удаление автоматически, можно добавить задачу в WP-Cron:

if (!wp_next_scheduled('wp7_delete_inactive_users_cron')) {
    wp_schedule_event(time(), 'daily', 'wp7_delete_inactive_users_cron');
}

add_action('wp7_delete_inactive_users_cron', 'wp7_delete_inactive_users');

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

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

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

  • Создайте бэкап базы данных перед массовыми удалениями;
  • Не удаляйте администраторов и редакторов без крайней необходимости;
  • Сообщайте пользователям о возможном удалении при длительной неактивности;
  • Используйте плагин Clearfy Pro для комплексной оптимизации и контроля пользователей.

Заключение

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

Как создать многослойную форму в WordPress с помощью AJAX
03.02.2026
Как создать и использовать REST API в WordPress
23.11.2025
Как автоматизировать очистку базы данных WordPress
11.03.2026
Как работает автоматическое сохранение в WordPress на примере WP7
07.04.2026
Как изменить структуру URL сообщений в WordPress без плагинов
19.01.2026