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

|

Что значит «неактивный пользователь» и зачем его удалять

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

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

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

Добавление метаполя для даты последнего входа

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

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

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

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

Для диагностики используйте SQL-запрос в phpMyAdmin или WP CLI, чтобы посмотреть пользователей без даты логина или с очень старой датой:

SELECT ID, user_login, user_email, meta_value AS last_login
FROM wp_users
LEFT JOIN wp_usermeta ON wp_users.ID = wp_usermeta.user_id AND wp_usermeta.meta_key = 'last_login'
ORDER BY last_login ASC NULLS FIRST
LIMIT 20;

Пользователи с пустой датой или датой более 6 месяцев назад — кандидаты на удаление.

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

Для удаления добавим WP-Cron задачу, которая раз в сутки будет находить и удалять пользователей, не заходивших более 180 дней.

1. Добавляем функцию удаления в functions.php

function delete_inactive_users() {
    $threshold = date('Y-m-d H:i:s', strtotime('-180 days'));
    $args = array(
        'meta_key'     => 'last_login',
        'meta_compare' => '<',
        'meta_value'   => $threshold,
        'fields'       => 'ID',
        'number'       => 100,
    );
    $user_query = new WP_User_Query($args);
    $users_to_delete = $user_query->get_results();

    if (!empty($users_to_delete)) {
        foreach ($users_to_delete as $user_id) {
            require_once(ABSPATH . 'wp-admin/includes/user.php');
            wp_delete_user($user_id);
        }
    }
}

add_action('daily_delete_inactive_users_event', 'delete_inactive_users');

2. Регистрируем ежедневное событие WP-Cron

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

Этот код добавит задание, которое будет запускаться раз в сутки и удалять пользователей старше 180 дней по дате последнего входа.

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

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

if (!in_array('administrator', get_userdata($user_id)->roles)) {
    wp_delete_user($user_id);
}

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

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

Как создать отзывы с экспертной оценкой в WordPress: практические примеры и плагины
27.01.2026
Как создать уникальные метаполя для постов в WordPress: практические примеры и код
24.01.2026
Автоматическое удаление неактивных пользователей в WordPress с помощью кода
08.07.2026
Автоматическое удаление отсутствующих вариаций в WooCommerce: практическое решение
17.07.2026
Как автоматически удалять неактивных пользователей в WordPress
09.06.2026
×
до 3225₽

WPShop - честная партнерка!

Зарабатывай с каждой продажи

Подключиться ⋙