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

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

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

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

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

  • Повысить безопасность сайта
  • Оптимизировать базу данных
  • Упростить управление пользователями

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

Перед удалением важно чётко определить, что считать неактивным пользователем. Самый простой критерий — дата последнего входа на сайт. Другие критерии могут включать отсутствие активности в комментариях, публикациях или заказах (для WooCommerce).

Для WordPress, к сожалению, по умолчанию не хранится дата последнего входа. Но её можно добавить с помощью плагинов или кода. Рассмотрим оба варианта.

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

Чтобы отслеживать логины пользователей, добавим код в functions.php активной темы или в отдельный плагин:

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

Этот хук обновляет мета-данные пользователя с ключом wpquery_last_login при каждом успешном входе.

Получение даты последнего входа из плагина

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

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

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

function wpquery_delete_inactive_users($months = 6) {
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . intval($months) . ' months'));
    $args = [
        'meta_key' => 'wpquery_last_login',
        'meta_value' => $date_threshold,
        'meta_compare' => '<',
        'fields' => 'ID',
        'number' => 1000
    ];
    $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);
    }
    return count($users_to_delete);
}

Эту функцию можно запускать вручную или автоматически через cron-задачу WordPress (wp_cron). Например, так:

function wpquery_schedule_inactive_user_cleanup() {
    if (!wp_next_scheduled('wpquery_inactive_user_cleanup_hook')) {
        wp_schedule_event(time(), 'daily', 'wpquery_inactive_user_cleanup_hook');
    }
}
add_action('wp', 'wpquery_schedule_inactive_user_cleanup');

add_action('wpquery_inactive_user_cleanup_hook', function() {
    $deleted_count = wpquery_delete_inactive_users(6);
    error_log('Удалено неактивных пользователей: ' . $deleted_count);
});
<

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

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

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

  • Inactive User Deleter — позволяет удалить пользователей по дате регистрации или последнего входа, настраивается порог неактивности.
  • WP User Manager — расширенный менеджер пользователей с функцией фильтрации и массового удаления.

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

Примеры использования и рекомендации

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

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

function wpquery_delete_inactive_users_safe($months = 6) {
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . intval($months) . ' months'));
    $args = [
        'meta_key' => 'wpquery_last_login',
        'meta_value' => $date_threshold,
        'meta_compare' => '<',
        'fields' => 'ID',
        'number' => 1000
    ];
    $user_query = new WP_User_Query($args);
    $users_to_delete = $user_query->get_results();

    foreach ($users_to_delete as $user_id) {
        $user = get_userdata($user_id);
        if (in_array('administrator', $user->roles)) {
            continue; // не трогаем админов
        }
        wp_delete_user($user_id);
    }
    return count($users_to_delete);
}

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

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

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

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

Как добавить внешний API в WordPress с помощью хуков и функций
12.12.2025
Как автоматизировать управление ролями пользователей в WordPress
14.03.2026
Как создать свой плагин для автоматизации задач в WordPress
30.01.2026
Как создать и использовать нестандартные статусы записей в WordPress
18.02.2026
Как использовать WP_Query для эффективного кэширования запросов WordPress
08.01.2026