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

Диагностика проблемы с неоплаченными заказами

На сайтах WooCommerce часто накапливается большое количество неоплаченных заказов, которые не удаляются автоматически. Это приводит к раздутой базе данных, замедлению работы административной панели и неактуальной статистике. Особенно это заметно при большом потоке пользователей и заказов.

Проверьте, есть ли у вас неоплаченные заказы старше определённого срока. Для этого в админке WooCommerce перейдите в раздел Заказы и установите фильтр по статусу on-hold или pending, а затем отсортируйте по дате создания. Если таких заказов много, их стоит регулярно удалять.

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

Реализуем удаление неоплаченных заказов старше 3 дней с помощью WP-Cron и стандартных функций WooCommerce.

1. Создание WP-Cron задачи

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

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

add_action('wc_delete_old_unpaid_orders', 'wc_delete_unpaid_orders_older_than_3_days');

function wc_delete_unpaid_orders_older_than_3_days() {
    $args = array(
        'limit' => -1,
        'status' => array('pending', 'on-hold'),
        'date_created' => '<' . (time() - 3 * DAY_IN_SECONDS),
        'return' => 'ids',
    );

    $orders = wc_get_orders($args);

    foreach ($orders as $order_id) {
        $order = wc_get_order($order_id);
        if ($order) {
            $order->delete(true); // true для полного удаления
        }
    }
}

2. Объяснение кода

  • wp_schedule_event создает ежедневное событие, которое запускает функцию удаления.
  • wc_get_orders получает список заказов со статусом pending или on-hold, созданных более 3 дней назад.
  • Цикл удаляет каждый заказ полностью через метод delete(true).

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

  • Выполните вручную запуск задачи через WP-CLI: wp cron event run wc_delete_old_unpaid_orders.
  • Проверьте раздел заказов в админке — заказы старше трёх дней со статусом pending или on-hold должны исчезнуть.
  • Для отладки можно добавить логирование внутри функции, например, через error_log('Удален заказ ' . $order_id);.

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

  • Нечастый запуск WP-Cron: на некоторых хостингах WP-Cron запускается только при посещении сайта. Для надежности настройте системный cron или используйте плагин WP Crontrol для запуска задач вручную.
  • Неправильные статусы заказов: убедитесь, что в аргументе 'status' указаны именно те статусы, которые вы хотите удалять. Иногда статусы могут быть кастомными.
  • Удаление не происходит: проверьте, что функция подключена и не вызывает ошибок. Включите WP_DEBUG и смотрите логи.
  • Удаление заказов с оплатой в процессе: будьте осторожны с удалением заказов, которые могут быть в процессе оплаты или ожидать подтверждения.

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

  • Всегда делайте резервные копии базы данных перед автоматическим удалением заказов.
  • Ограничьте выборку заказов для удаления по времени и статусу, чтобы не перегружать сервер.
  • Если заказов очень много, разбивайте удаление на партии по 50-100 заказов за один запуск.
  • Для оптимизации можно использовать плагин Clearfy Pro (https://wpshop.ru/plugins/clearfy?utm_source=wpteam.ru&utm_medium=article&utm_campaign=woocommerce-avtomaticheskoe-udaleniye-neoplachennyh-zakazov-po-sroku), который помогает управлять базой и удалять неактуальные записи.

Сравнение способов удаления неоплаченных заказов

СпособПлюсыМинусы
Ручное удаление в админкеПростота, контрольТрудозатратно, неавтоматично
WP-Cron с кастомным кодомАвтоматизация, точечное управлениеНужны навыки, возможны ошибки при некорректном коде
Плагины для очистки базыУдобно, набор функцийМогут влиять на производительность, лицензирование
Как добавить динамические метаданные в WordPress по условию
31.03.2026
Как создать автоматический импорт данных из Google Sheets в WordPress
21.01.2026
Как автоматизировать управление публикациями в WordPress с помощью WP-Cron и кода
11.04.2026
Как использовать хуки в WordPress для эффективного кода
21.11.2025
WooCommerce: автоматическое удаление товаров по неактивности и дате обновления
21.05.2026

Возникли задачи по WP? Вы можете задать свой вопрос на FAQwp.com Либо обратиться к специалистам поддержки.