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

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

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

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

Удаление таких аккаунтов помогает:

  • Сократить размер базы пользователей и ускорить запросы к ней.
  • Уменьшить риск взлома через забытые аккаунты.
  • Обеспечить актуальность аудитории сайта.

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

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

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

  • Дата последнего входа на сайт.
  • Дата последнего обновления профиля.
  • Активность в комментариях или публикациях.

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

Добавление отслеживания последнего входа через код

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

function premiumwp_update_last_login($login, $user) {
    update_user_meta($user->ID, 'premiumwp_last_login', current_time('mysql'));
}
add_action('wp_login', 'premiumwp_update_last_login', 10, 2);

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

Получение списка неактивных пользователей

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

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

    $query = $wpdb->prepare(
        "SELECT user_id FROM {$wpdb->usermeta} 
         WHERE meta_key = 'premiumwp_last_login' AND meta_value < %s",
        $date_threshold
    );
    $user_ids = $wpdb->get_col($query);

    return $user_ids;
}

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

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

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

function premiumwp_delete_inactive_users($days = 180) {
    $inactive_users = premiumwp_get_inactive_users($days);

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

Вызовите эту функцию в нужный момент, например, через планировщик WP-Cron или вручную. Будьте осторожны с удалением, рекомендуем сначала протестировать на копии сайта.

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

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

function premiumwp_block_inactive_users($user, $username, $password) {
    if (is_a($user, 'WP_User')) {
        $last_login = get_user_meta($user->ID, 'premiumwp_last_login', true);
        $threshold = strtotime('-180 days');
        if (!$last_login || strtotime($last_login) < $threshold) {
            return new WP_Error('blocked_user', __('Ваш аккаунт временно заблокирован из-за отсутствия активности. Пожалуйста, свяжитесь с администратором.'));
        }
    }
    return $user;
}
add_filter('authenticate', 'premiumwp_block_inactive_users', 30, 3);

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

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

Если вы предпочитаете готовые решения, рассмотрите следующие плагины:

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

Все эти плагины можно найти и приобрести с UTM-метками на WPSHOP.RU.

Автоматизация и планирование очистки пользователей

Для автоматического удаления или блокировки можно настроить WP-Cron. Например, создадим задачу, которая запускает удаление раз в месяц:

function premiumwp_register_cron_job() {
    if (!wp_next_scheduled('premiumwp_delete_inactive_users_monthly')) {
        wp_schedule_event(time(), 'monthly', 'premiumwp_delete_inactive_users_monthly');
    }
}
add_action('wp', 'premiumwp_register_cron_job');

add_action('premiumwp_delete_inactive_users_monthly', function() {
    premiumwp_delete_inactive_users(180);
});
<

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

Итоги и рекомендации по безопасности

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

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

Как избежать проблем с перенаправлениями в WordPress
15.03.2026
Как создать собственный виджет в WordPress: руководство PremiumWP
19.11.2025
Как создать автоматическую оптимизацию базы данных WordPress
23.03.2026
Как создать автоматический импорт постов в WordPress с помощью PremiumWP
02.01.2026
Оптимизация загрузки пользовательских файлов в WordPress
07.02.2026