WooCommerce: как автоматически удалять отменённые заказы с помощью кода

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

В WooCommerce накопление отменённых заказов (статус cancelled) усложняет управление заказами и может замедлять работу сайта, особенно при большом объёме данных. Встроенных инструментов для массового удаления отменённых заказов нет, а ручное удаление неудобно и рискованно. Автоматизация процесса позволяет поддерживать базу заказов в актуальном состоянии без участия администратора.

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

1. Создание WP-Cron задачи для удаления заказов

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

if ( ! wp_next_scheduled( 'wc_delete_cancelled_orders_daily' ) ) {
    wp_schedule_event( time(), 'daily', 'wc_delete_cancelled_orders_daily' );
}

add_action( 'wc_delete_cancelled_orders_daily', 'wc_delete_cancelled_orders_callback' );

2. Функция удаления отменённых заказов

Функция будет искать все заказы со статусом cancelled и удалять их из базы данных.

function wc_delete_cancelled_orders_callback() {
    $args = array(
        'limit'        => -1, // без ограничения
        'status'       => 'cancelled',
        'return'       => 'ids',
        'paginate'     => false,
    );

    $orders = wc_get_orders( $args );
    if ( ! empty( $orders ) ) {
        foreach ( $orders as $order_id ) {
            wp_delete_post( $order_id, true ); // true - безвозвратное удаление
        }
    }
}

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

Чтобы проверить, что удаление сработало корректно:

  • Создайте тестовый заказ с статусом cancelled вручную или через админку.
  • Выполните функцию вручную (например, вызвав wc_delete_cancelled_orders_callback() через временный вызов или WP-CLI).
  • Проверьте, что заказ удалён из списка заказов WooCommerce.
  • Мониторьте логи ошибок PHP на наличие предупреждений.

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

  • Заказы не удаляются: проверьте наличие WP-Cron задачи командой wp cron event list (если используете WP-CLI). Возможно, задача не запланирована.
  • Удаляются не все заказы: убедитесь, что статус заказа точно cancelled, а не failed или другой.
  • Удаление вызывает ошибки: проверьте права пользователя, под которым работает PHP, и доступ к базе данных.
  • WP-Cron не срабатывает автоматически: настройте запуск WP-Cron через системный cron или плагин для надежного выполнения задач.

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

  • Используйте wp_delete_post с параметром true, чтобы полностью удалить заказы, включая метаданные, и не оставлять мусор в БД.
  • Если заказов очень много, ограничьте количество удаляемых заказов за один запуск, чтобы избежать превышения времени выполнения. Например, добавьте параметр 'limit' => 100 и запускайте очистку чаще.
  • Регулярно делайте резервные копии базы данных перед автоматическим удалением.
  • Для улучшения производительности можете использовать отдельный кастомный плагин для управления WP-Cron задачами и вести лог удалений.

Сравнение методов удаления отменённых заказов

МетодПлюсыМинусыКогда использовать
Ручное удаление через админкуПростота, без кодаТрудозатратно, риск ошибок при большом объёмеМаленькие магазины с редкими отменами
Плагины для массового удаления заказовУдобный интерфейс, готовые решенияМожет влиять на производительность, требует обновленийСредние и крупные магазины, без навыков программирования
Автоматизация через WP-Cron и кодПолный контроль, автоматизация, минимум вмешательстваТребует базовых знаний PHP, настройка WP-CronКрупные магазины, требующие регулярной очистки
Как автоматизировать удаление старого контента в WordPress по дате
24.02.2026
WordPress: установка и настройка WPRemark для отзывов на сайте
01.01.2026
Удаление неиспользуемых терминов таксономий в WordPress
09.02.2026
WooCommerce: автоматическое изменение статуса заказа при оплате через платежные системы
28.05.2026
WooCommerce: как автоматически удалять отменённые заказы с помощью кода
04.06.2026

Обучение разработке на WordPress, как создавать темы, плагины. Подробнее об обучении.