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

|

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

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

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

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

Как проверить, есть ли у вас данные о последнем входе

В базе данных WordPress можно посмотреть метаполе пользователя, например, last_login. Чтобы проверить, есть ли такие данные, выполните SQL-запрос в phpMyAdmin:

SELECT user_id, meta_value FROM wp_usermeta WHERE meta_key = 'last_login' LIMIT 10;

Если результатов нет, значит отслеживание не настроено и нужно добавить соответствующий код.

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

1. Сохраняем дату последнего входа пользователя

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

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

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

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

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

function delete_inactive_users() {
    $threshold = strtotime('-180 days'); // 180 дней назад
    $args = [
        'meta_key' => 'last_login',
        'meta_value' => $threshold,
        'meta_compare' => '<',
        'fields' => 'ID',
        '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);
    }
}

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

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

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

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

add_action('delete_inactive_users_daily', 'delete_inactive_users');

Этот код создаёт ежедневное событие, которое вызывает функцию удаления.

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

1. Проверьте, что при входе пользователя в базу данных в wp_usermeta создаётся или обновляется ключ last_login с текущим timestamp.

2. Запустите функцию удаления вручную, добавив временно вызов delete_inactive_users() в functions.php и проверьте, что пользователи с датой последнего входа более 180 дней удаляются.

3. Проверяйте логи сервера и таблицы пользователей, чтобы убедиться, что удаление происходит без ошибок.

Частые ошибки и как их исправить

Практические советы по безопасности и производительности

Таблица сравнения способов удаления неактивных пользователей

МетодОписаниеПлюсыМинусы
WP_User_Query + wp_delete_userИспользование стандартных API WordPressБезопасно, учитывает всю логику удаленияМедленнее на больших базах
Прямой SQL + удаление через SQLУдаление через SQL-запросыБыстро на больших базахРиск повреждения данных, обход хуков
Плагины (Clearfy Pro и др.)Готовые решения с настройкамиПросто, поддержка, интерфейсЗависимость от стороннего кода, нагрузка
Как создать отзывы с экспертной оценкой в WordPress: практические примеры и плагины
27.01.2026
Как удалить неиспользуемые вариации товаров в WooCommerce: практическое руководство
03.05.2026
Как создать динамические формы в WordPress с помощью AJAX
15.12.2025
Как отключить автопроизвольный звонок в WordPress без плагинов
25.12.2025
Автоматическое удаление неактивных пользователей в WordPress с помощью кода
08.07.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше