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

|

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

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

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

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

Пример кода для записи времени последнего входа

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

Этот код добавляет метаданные last_login с UNIX-таймстампом времени входа.

Пошаговое решение: скрипт автоматического удаления

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

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

function delete_inactive_users() {
    $threshold = strtotime( '-180 days' );
    $args = [
        'meta_key' => 'last_login',
        'meta_value' => $threshold,
        'meta_compare' => '<=',
        'fields' => 'ID',
        'number' => 100,
    ];
    $user_query = new WP_User_Query( $args );
    $users = $user_query->get_results();

    if ( !empty( $users ) ) {
        foreach ( $users as $user_id ) {
            wp_delete_user( $user_id );
        }
    }
}

// Запуск функции через WP-Cron раз в неделю
if ( !wp_next_scheduled( 'weekly_delete_inactive_users' ) ) {
    wp_schedule_event( time(), 'weekly', 'weekly_delete_inactive_users' );
}
add_action( 'weekly_delete_inactive_users', 'delete_inactive_users' );

В этом коде:

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

Чтобы проверить работу сценария:

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

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

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

МетодПреимуществаНедостатки
WP-Cron с собственным кодомГибкость, бесплатно, точный контрольЗависит от посещаемости сайта, возможны сбои
Системный cron с WP-CLIНадежность, не зависит от посетителейТребует доступа к серверу, сложнее в настройке
Плагины автоматизацииПростота настройкиМожет нагружать сайт, меньше контроля
Как использовать WP-Cron для решения проблем с задачами в WordPress
04.12.2025
Как создать автоматический каталог карт в WordPress с использованием Yelly
12.04.2026
Как автоматизировать управление медиа-содержимым в WordPress: практические решения и примеры
31.01.2026
Как автоматизировать управление отзывами в WordPress с помощью Expert Review
10.02.2026
Как создать динамический список с постами WordPress с использованием AJAX
18.03.2026
×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙