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

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

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

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

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

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

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

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

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

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

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

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

Этот хук wp_login срабатывает при успешном входе пользователя и записывает текущую дату и время в метаполе wpmy_last_login.

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

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

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

function wpmy_delete_inactive_users() {
    $days_inactive = 180; // количество дней неактивности
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days_inactive . ' days'));

    $args = array(
        'meta_key' => 'wpmy_last_login',
        'meta_value' => $date_threshold,
        'meta_compare' => '<',
        'fields' => 'ID',
        'number' => 100,
    );
    
    $inactive_users = get_users($args);
    
    foreach($inactive_users as $user_id) {
        // Можно добавить исключения, например, не удалять администраторов
        $user = get_userdata($user_id);
        if (in_array('administrator', $user->roles)) {
            continue;
        }
        wp_delete_user($user_id);
    }
}

Эту функцию можно запускать по расписанию с помощью WP-Cron, чтобы автоматизировать процесс.

Настройка WP-Cron для автоматического запуска

Добавьте следующий код для регистрации задачи:

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

add_action('wpmy_daily_user_cleanup', 'wpmy_delete_inactive_users');

Этот код запускает функцию удаления раз в сутки, что достаточно для большинства сайтов.

Плагины для отслеживания активности пользователей

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

  • User Last Login — плагин, который автоматически сохраняет дату последнего входа пользователя.
  • Clearfy Pro — комплексное решение для оптимизации WordPress, в котором есть инструменты для управления пользователями и очистки базы.

Дополнительные советы по безопасности и оптимизации

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

  • Обязательно делайте резервное копирование базы перед выполнением массовых операций.
  • Не удаляйте пользователей с особыми ролями — администраторов, редакторов.
  • Если у пользователя есть связанные данные (например, публикации), подумайте, что с ними делать при удалении — можно переназначить их другому автору.
  • Проверяйте логи и уведомления, чтобы не потерять важных пользователей по ошибке.

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

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

Как установить лимит на количество сообщений в формах WordPress
31.03.2026
Защита WordPress от Brute Force атак с помощью кода
10.12.2025
Как установить просмотр и управление ролями пользователей в WordPress
24.02.2026
WooCommerce: как автоматически удалять зависшие отменённые заказы
30.05.2026
Как динамически изменить заголовок страницы в WordPress
11.02.2026