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

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

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

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

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

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

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

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

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

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

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

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

Критерий неактивности

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

Автоматическое удаление неактивных пользователей с помощью WP-Cron

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

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

function wpskill_delete_inactive_users() {
    $threshold = strtotime('-180 days'); // 180 дней назад

    $args = array(
        'meta_key' => 'wp_last_login',
        'meta_value' => $threshold,
        'meta_compare' => '<',
        'fields' => 'ID',
        'number' => 1000, // лимит за раз
    );

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

    foreach ($users as $user_id) {
        // Можно добавить исключения, например, админов
        if (!user_can($user_id, 'administrator')) {
            wp_delete_user($user_id);
        }
    }
}

function wpskill_schedule_inactive_user_deletion() {
    if (!wp_next_scheduled('wpskill_delete_inactive_users_hook')) {
        wp_schedule_event(time(), 'daily', 'wpskill_delete_inactive_users_hook');
    }
}
add_action('wp', 'wpskill_schedule_inactive_user_deletion');
add_action('wpskill_delete_inactive_users_hook', 'wpskill_delete_inactive_users');

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

Исключения и безопасность при удалении пользователей

Очень важно не удалить нужных пользователей, особенно администраторов или редакторов. В коде выше мы исключили администраторов с помощью проверки user_can($user_id, 'administrator'). По аналогии можно сделать исключения для других ролей.

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

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

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

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

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

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

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

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

function wpskill_delete_inactive_users() {
    // ... поиск пользователей
    foreach ($users as $user_id) {
        if (!user_can($user_id, 'administrator')) {
            $user = get_userdata($user_id);
            // Удаляем из рассылки
            wpskill_remove_user_from_mailing($user->user_email);
            // Удаляем пользователя
            wp_delete_user($user_id);
        }
    }
}

function wpskill_remove_user_from_mailing($email) {
    // Пример для Mailchimp
    $api_key = 'your_mailchimp_api_key';
    $list_id = 'your_list_id';
    $member_id = md5(strtolower($email));
    $data_center = substr($api_key,strpos($api_key,'-')+1);
    $url = 'https://' . $data_center . '.api.mailchimp.com/3.0/lists/' . $list_id . '/members/' . $member_id;

    $args = array(
        'method' => 'DELETE',
        'headers' => array(
            'Authorization' => 'apikey ' . $api_key
        )
    );

    wp_remote_request($url, $args);
}

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

Выводы и рекомендации по автоматическому удалению неактивных пользователей

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

Если вы используете плагин Clearfy Pro, обратите внимание на его возможности по управлению пользователями и безопасности: https://wpshop.ru/clearfy-pro/.

Как добавить динамические атрибуты товара в WooCommerce с примерами кода
01.05.2026
Как использовать хуки и фильтры WordPress для автоматизации задач
25.01.2026
Оптимизация производительности запросов WordPress с помощью pre_get_posts
23.12.2025
Автоматическое удаление старых записей в WordPress через WP-Cron
10.01.2026
Автоматическое создание и отправка email-отчетов в WordPress
14.03.2026