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

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

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

Неактивные пользователи — это учетные записи, которые не выполняли вход в систему за длительный период (например, 6 или 12 месяцев). Удаление таких аккаунтов помогает:

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

Автоматизация этого процесса избавит администратора от рутины и снизит риски ошибок.

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

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

Метод 1: Использование мета-поля user_last_login

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

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

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

Метод 2: Использование плагинов для отслеживания активности

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

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

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

function wp5_delete_inactive_users() {
    $days_inactive = 180;
    $cutoff = strtotime('-' . $days_inactive . ' days');

    $args = array(
        'meta_key'     => 'wp5_last_login',
        'meta_value'   => $cutoff,
        'meta_compare' => '<',
        'fields'       => 'ID',
        'number'       => 100,
    );

    $user_query = new WP_User_Query( $args );
    $users_to_delete = $user_query->get_results();

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

Эта функция ищет пользователей с датой последнего входа раньше чем 180 дней назад и удаляет их. Параметр number ограничивает количество удаляемых пользователей за один вызов для безопасности.

Запуск удаления по расписанию через WP Cron

Чтобы функция выполнялась автоматически, нужно зарегистрировать событие Cron:

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

add_action( 'wp5_daily_user_cleanup', 'wp5_delete_inactive_users' );

Этот код регистрирует ежедневное выполнение функции удаления неактивных пользователей.

Обработка исключений и безопасность

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

foreach ( $users_to_delete as $user_id ) {
    $user = get_userdata( $user_id );
    if ( in_array( 'administrator', $user->roles ) ) {
        continue; // не удаляем админов
    }
    require_once( ABSPATH . 'wp-admin/includes/user.php' );
    wp_delete_user( $user_id );
}

Также можно отправлять уведомления администратору перед массовым удалением или логировать действия для контроля.

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

Помимо собственного кода, полезно рассмотреть готовые решения:

  • Inactive User Deleter — плагин для удаления пользователей по неактивности без кода.
  • Clearfy Pro — оптимизационный плагин с функциями по управлению пользователями и безопасности.

Советы по тестированию и внедрению

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

  • Сделайте резервную копию базы данных.
  • Напишите функции логирования для контроля удаляемых аккаунтов.
  • Запустите функцию вручную с ограничением количества пользователей и проверьте результат.
  • Оповещайте команду или администраторов о запланированных очистках.

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

WooCommerce: как создать автозаполняемые поля в форме оформления заказа
24.05.2026
Как установить уникальные слаги для таксономий в WordPress
27.03.2026
Как автоматизировать отзывы на сайте WordPress
20.12.2025
Автоматический экспорт пользовательских данных в WordPress: пошаговое руководство
18.01.2026
Автоматическое создание и удаление вариантов ответа в формах WordPress
27.03.2026