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

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

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

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

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

Ручное удаление — непрактично и рискованно, поэтому рекомендуем автоматизировать процесс.

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

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

Отслеживание последнего входа через плагин WP User Last Login

Плагин WP User Last Login сохраняет дату последнего входа каждого пользователя, добавляя соответствующее поле в профиль.

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

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

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

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

Этот код сохраняет дату и время последнего входа пользователя в метаданные с ключом wpcontent_last_login.

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

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

Использование плагина Inactive User Deleter

Плагин Inactive User Deleter позволяет задать период неактивности (например, 6 месяцев), после которого пользователи удаляются автоматически.

Он интегрируется с WP User Last Login для точного определения неактивных пользователей.

Реализация автоматического удаления с помощью WP-Cron и кода

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

// Регистрируем событие cron при активации плагина или темы
register_activation_hook(__FILE__, 'wpcontent_activate_cron');
function wpcontent_activate_cron() {
    if (!wp_next_scheduled('wpcontent_delete_inactive_users')) {
        wp_schedule_event(time(), 'daily', 'wpcontent_delete_inactive_users');
    }
}

// Удаляем событие cron при деактивации
register_deactivation_hook(__FILE__, 'wpcontent_deactivate_cron');
function wpcontent_deactivate_cron() {
    $timestamp = wp_next_scheduled('wpcontent_delete_inactive_users');
    wp_unschedule_event($timestamp, 'wpcontent_delete_inactive_users');
}

// Основная функция удаления
add_action('wpcontent_delete_inactive_users', 'wpcontent_delete_inactive_users_function');
function wpcontent_delete_inactive_users_function() {
    global $wpdb;
    $threshold = date('Y-m-d H:i:s', strtotime('-6 months'));
    $user_ids = $wpdb->get_col($wpdb->prepare(
        "SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'wpcontent_last_login' AND meta_value < %s",
        $threshold
    ));
    foreach ($user_ids as $user_id) {
        require_once(ABSPATH . 'wp-admin/includes/user.php');
        wp_delete_user($user_id);
    }
}

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

Как исключить определенные роли из удаления

Возможно, вы хотите сохранить администраторов или редакторов, даже если они долго не проявляли активности. Для этого внесите небольшие изменения:

foreach ($user_ids as $user_id) {
    $user = get_userdata($user_id);
    if (in_array('administrator', $user->roles)) {
        continue; // пропускаем админов
    }
    wp_delete_user($user_id);
}

Так вы защитите важные аккаунты.

Практические советы и рекомендации

  • Перед автоматическим удалением сделайте резервную копию базы данных.
  • Добавьте уведомление пользователям о предстоящем удалении из-за неактивности.
  • Тестируйте скрипт на тестовом сайте, чтобы избежать потери важных данных.
  • Используйте плагин Clearfy Pro от WPGShop для дополнительной оптимизации и безопасности WordPress.

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

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

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

function wpcontent_disable_inactive_users() {
    global $wpdb;
    $threshold = date('Y-m-d H:i:s', strtotime('-6 months'));
    $user_ids = $wpdb->get_col($wpdb->prepare(
        "SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'wpcontent_last_login' AND meta_value < %s",
        $threshold
    ));
    foreach ($user_ids as $user_id) {
        $user = new WP_User($user_id);
        $user->set_role('blocked');
    }
}

Для этого нужно заранее создать роль blocked с минимальными правами.

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

Плагины как WPCommunity помогают эффективно управлять пользовательской базой и могут быть полезным дополнением.

Как добавить автоматические оглавления в блоках Gutenberg WordPress
15.01.2026
Как использовать REST API в WordPress для создания плагинов
16.11.2025
Как автоматизировать удаление старых ревизий постов в WordPress через WP-Cron
12.04.2026
Как изменить длину URL в WordPress через функцию wpcontent_custom_url_length
07.03.2026
Автоматическое удаление старых версий медиафайлов в WordPress для оптимизации хранилища
11.12.2025