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

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

Магазины на WooCommerce с большим потоком посетителей часто сталкиваются с накоплением заказов в статусах, которые не переходят в обработку или завершение — например, «ожидает оплаты» или «отменён». Такие заказы засоряют базу, замедляют работу админки и влияют на отчёты. Автоматическое удаление неактивных заказов помогает поддерживать базу в чистоте и оптимизировать производительность.

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

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

  • имеют статус pending, failed или cancelled;
  • созданы более 7-14 дней назад (в зависимости от бизнес-процесса);
  • не были оплачены и не требуют дальнейшей обработки.

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

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

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

function wpkit_delete_old_inactive_orders() {
    if ( ! class_exists( 'WooCommerce' ) ) {
        return;
    }
    // Определяем дату 14 дней назад
    $date = date( 'Y-m-d H:i:s', strtotime( '-14 days' ) );

    // Получаем ID заказов со статусами, которые считаем неактивными
    $args = array(
        'limit'        => -1,
        'status'       => array( 'pending', 'failed', 'cancelled' ),
        'date_created' => '<' . $date,
        'return'       => 'ids',
    );

    $orders = wc_get_orders( $args );

    if ( empty( $orders ) ) {
        return;
    }

    foreach ( $orders as $order_id ) {
        wp_delete_post( $order_id, true ); // Полное удаление заказа
    }
}

// Запускаем очистку по расписанию раз в сутки
if ( ! wp_next_scheduled( 'wpkit_daily_delete_inactive_orders' ) ) {
    wp_schedule_event( time(), 'daily', 'wpkit_daily_delete_inactive_orders' );
}
add_action( 'wpkit_daily_delete_inactive_orders', 'wpkit_delete_old_inactive_orders' );

Этот код создаёт ежедневное задание, которое ищет и полностью удаляет заказы со статусами pending, failed и cancelled, созданные более 14 дней назад.

Настройка интервала и статусов

Вы можете изменить интервал удаления или статусы, отредактировав параметры в массиве $args и функцию strtotime.

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

  • В админке WooCommerce перейдите в «Заказы» и проверьте, что устаревшие заказы с указанными статусами исчезают спустя 14 дней.
  • Для тестирования можно временно изменить дату в коде на несколько минут назад, создать тестовые заказы нужных статусов и убедиться в их удалении после запуска cron-задачи.
  • Проверьте логи ошибок PHP, чтобы убедиться, что удаление проходит без сбоев.

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

  • Заказы не удаляются: проверьте, что крон-задача запущена. Для этого используйте плагин WP Crontrol и смотрите наличие события wpkit_daily_delete_inactive_orders.
  • Ошибка "Class 'WooCommerce' not found": убедитесь, что WooCommerce активен, и код выполняется после загрузки плагина (например, добавьте проверку class_exists('WooCommerce')).
  • Удаляются активные заказы: внимательно проверьте фильтр по статусам и дате, чтобы не удалить нужные заказы.

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

  • Резервное копирование: перед внедрением автоматического удаления обязательно настройте регулярные бэкапы базы данных.
  • Проверка перед удалением: можно доработать код, чтобы перед удалением заказы переносились в отдельный статус или экспортировались в CSV для анализа.
  • Оптимизация запросов: если база очень большая, ограничивайте количество удаляемых заказов за один запуск, например, 'limit' => 100, чтобы избежать тайм-аутов.
  • Использование плагинов: если хотите упростить задачу, можно использовать плагин Clearfy Pro (https://wpshop.ru/plugins/clearfy?utm_source=wpkit.ru&utm_medium=article&utm_campaign=woocommerce-avtomaticheskoe-udaleniie-neaktivnyh-zakazov), который содержит инструменты для очистки данных WooCommerce с настройками и безопасными фильтрами.

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

МетодПлюсыМинусыПодходит для
Ручное удаление из админкиПростота, контрольТрудоёмко, неэффективно при большом объёмеНебольшие магазины
Автоматизация через код (cron)Полный контроль, гибкостьТребует навыков PHP, возможны ошибкиРазработчики, средние и крупные магазины
Плагины (Clearfy Pro и другие)Удобство, поддержка, дополнительные функцииЗависимость от стороннего кода, лицензияМенеджеры с ограниченными знаниями
Как создать свой шорткод для WordPress
27.11.2025
Добавление поля телефона в форму регистрации WordPress с подтверждением по SMS
09.01.2026
Как создать автоматический импорт постов в WordPress с обработкой ошибок
17.04.2026
WooCommerce: как заблокировать оплату при наличии товаров с определёнными атрибутами в корзине
28.06.2026
WooCommerce: автоматическое изменение стоимости товаров при оплате с поддержкой купонов
10.07.2026