WooCommerce: как автоматически удалять заказы со статусом «Отменен»

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

В интернет-магазинах на WooCommerce накопление заказов со статусом «Отменен» затрудняет управление и замедляет работу админки. Такие заказы не влияют на аналитику по продажам и могут создавать лишнюю нагрузку на базу данных, особенно при большом объеме.

Проверить количество заказов со статусом «Отменен» можно в админ-панели WooCommerce, перейдя в раздел WooCommerce > Заказы и отфильтровав по статусу «Отменен».

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

1. Создаем функцию для удаления заказов

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

function wp_puzzle_delete_cancelled_orders() {
    $args = array(
        'post_type'      => 'shop_order',
        'post_status'    => 'wc-cancelled',
        'posts_per_page' => -1,
        'fields'         => 'ids',
    );

    $orders = get_posts($args);

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

    foreach ($orders as $order_id) {
        wp_delete_post($order_id, true);
    }
}

2. Запускаем удаление по расписанию (cron)

Чтобы автоматизировать процесс, зарегистрируем пользовательское событие и запланируем его выполнение раз в сутки.

// Регистрируем cron событие при активации темы или плагина
function wp_puzzle_schedule_cancelled_orders_cleanup() {
    if (!wp_next_scheduled('wp_puzzle_cleanup_cancelled_orders')) {
        wp_schedule_event(time(), 'daily', 'wp_puzzle_cleanup_cancelled_orders');
    }
}
add_action('wp', 'wp_puzzle_schedule_cancelled_orders_cleanup');

// Очищаем cron при деактивации темы/плагина
function wp_puzzle_clear_cancelled_orders_cleanup() {
    $timestamp = wp_next_scheduled('wp_puzzle_cleanup_cancelled_orders');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'wp_puzzle_cleanup_cancelled_orders');
    }
}
// Здесь нужно повесить на хуки деактивации темы или плагина

// Привязываем функцию удаления к событию
add_action('wp_puzzle_cleanup_cancelled_orders', 'wp_puzzle_delete_cancelled_orders');

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

После установки кода и работы планировщика (cron) проверьте:

  • В админке WooCommerce исчезли заказы со статусом «Отменен».
  • В базе данных (таблица wp_posts) не осталось записей заказов со статусом wc-cancelled.
  • В логах сервера нет ошибок, связанных с удалением заказов.

Для ручной проверки можно временно вызвать wp_puzzle_delete_cancelled_orders() напрямую в admin_init, но не забывайте отключить после теста.

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

  • Удаление не происходит: проверьте, что cron события действительно работают. Используйте плагин WP Crontrol для просмотра и управления задачами cron.
  • Заказы не удаляются полностью: параметр wp_delete_post с true на втором аргументе гарантирует полное удаление, включая метаданные. Если не работает, проверьте права пользователя.
  • Удаляются не те заказы: убедитесь, что в запросе post_status указан именно wc-cancelled, а не cancelled или другой статус.
  • Производительность падает при большом количестве заказов: ограничьте число удаляемых заказов за один запуск, добавив параметр posts_per_page например 100, и реализуйте постепенное удаление.

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

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

Сравнение способов удаления заказов «Отменен»

МетодПлагинКодПлюсыМинусы
Удаление вручнуюПростотаТребует времени, риск пропустить заказы
Плагин очистки заказовWooCommerce Order CleanupУдобство, настройки графикаДоп нагрузка, возможные конфликты
Автоматизация через кодДемонстрированный код вышеМинимальная нагрузка, кастомизацияТребует навыков, ответственность за тестирование

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как создать собственный шорткод в WordPress: подробное руководство с примерами
04.11.2025
Как использовать WPRemark для создания отзывов и рецензий в WordPress
07.02.2026
WooCommerce: как автоматически удалять неактивных клиентов
17.07.2026
Оптимизация базы данных WordPress для ускорения сайта: практические советы и примеры
12.11.2025
WordPress: как удалить пустое место в меню и исправить пробелы между пунктами
08.12.2025
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее