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

|

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

В интернет-магазинах на WooCommerce часто накапливается большое количество неоплаченных заказов. Это может приводить к:

Чтобы это решить, нужно автоматически удалять или архивировать неоплаченные заказы, которые не были оплачены в течение определенного времени (например, 1 день). WooCommerce по умолчанию не предлагает такую функцию, но ее можно реализовать через кастомный код.

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

1. Создаем функцию для удаления неоплаченных заказов старше N часов

function wc_delete_old_unpaid_orders() {
    $hours = 24; // Время в часах для хранения неоплаченных заказов
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $hours . ' hours'));

    $args = array(
        'limit' => -1,
        'status' => array('pending', 'failed'), // Статусы неоплаченных заказов
        'date_modified' => '<' . $date_threshold,
        'return' => 'ids',
    );

    $orders = wc_get_orders($args);

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

2. Регистрируем cron задачу для регулярного запуска

function wc_schedule_delete_old_unpaid_orders() {
    if (!wp_next_scheduled('wc_delete_unpaid_orders_event')) {
        wp_schedule_event(time(), 'hourly', 'wc_delete_unpaid_orders_event');
    }
}
add_action('wp', 'wc_schedule_delete_old_unpaid_orders');

add_action('wc_delete_unpaid_orders_event', 'wc_delete_old_unpaid_orders');

3. Отключаем cron задачу при деактивации темы или плагина

function wc_unschedule_delete_old_unpaid_orders() {
    $timestamp = wp_next_scheduled('wc_delete_unpaid_orders_event');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'wc_delete_unpaid_orders_event');
    }
}
register_deactivation_hook(__FILE__, 'wc_unschedule_delete_old_unpaid_orders');

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

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

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

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

МетодОписаниеПлюсыМинусы
Ручное удаление через админку Администратор удаляет заказы вручную Просто, без кода Трудоемко, неэффективно при большом количестве заказов
Плагин для очистки заказов Использование готовых плагинов, например, "WooCommerce Remove Unpaid Orders" Быстро настроить, поддержка Зависимость от стороннего кода, возможные конфликты
Кастомный cron с кодом Автоматическое удаление через wp_cron и кастомную функцию Гибкость, точный контроль, отсутствие лишних плагинов Требует разработки и тестирования
WooCommerce: как автоматически очищать корзину после успешной оплаты
27.04.2026
Оптимизация базы данных WordPress: удаляем избыточные данные для ускорения сайта
18.11.2025
Как добавить автоматическое удаление старого контента в WordPress
22.03.2026
WooCommerce: как автоматически удалять заказы по определённому статусу
24.05.2026
Как удалить и заблокировать неиспользуемые посты в WordPress: практическое руководство
12.12.2025
×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙