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

Почему важно удалять старые неоплаченные заказы в WooCommerce

С течением времени в базе WooCommerce накапливаются неоплаченные заказы. Они занимают место, замедляют работу административной панели и влияют на отчёты. Ручное удаление — затратная и ошибкоопасная процедура. Автоматизация удаления поможет поддерживать базу в порядке, не теряя важных данных по оплачиваемым заказам.

Как диагностировать проблему с накоплением неоплаченных заказов

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

global $wpdb;
$days = 30; // количество дней
$orders_count = $wpdb->get_var( $wpdb->prepare(
    "SELECT COUNT(*) FROM {$wpdb->prefix}posts
     WHERE post_type = 'shop_order'
     AND post_status = 'wc-pending'
     AND post_date < NOW() - INTERVAL %d DAY",
    $days
));
echo "Неоплаченных заказов старше $days дней: $orders_count";

Если число большое (сотни или тысячи), стоит задуматься об автоматизации очистки.

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

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

function wprus_delete_old_unpaid_orders() {
    $days = 30; // удалять заказы старше 30 дней
    $args = array(
        'status' => 'pending',
        'date_created' => '<' . ( new WC_DateTime() )->modify( "-{$days} days" )->date( 'Y-m-d H:i:s' ),
        'limit' => -1,
        'return' => 'ids',
    );
    $orders = wc_get_orders( $args );

    foreach ( $orders as $order_id ) {
        wp_trash_post( $order_id ); // перемещаем заказ в корзину (безопаснее, чем полностью удалять)
    }
}

2. Регистрируем ежедневное событие WP Cron

function wprus_schedule_order_cleanup() {
    if ( ! wp_next_scheduled( 'wprus_daily_order_cleanup' ) ) {
        wp_schedule_event( time(), 'daily', 'wprus_daily_order_cleanup' );
    }
}
add_action( 'wp', 'wprus_schedule_order_cleanup' );
add_action( 'wprus_daily_order_cleanup', 'wprus_delete_old_unpaid_orders' );

3. Как проверить, что задача работает

  • В админке WordPress установите плагин WP Crontrol (https://ru.wordpress.org/plugins/wp-crontrol/), чтобы увидеть запланированные задачи.
  • Проверьте, что событие wprus_daily_order_cleanup запланировано и выполняется.
  • Посмотрите базу заказов или используйте SQL-запрос, чтобы убедиться, что старые неоплаченные заказы перемещаются в корзину.

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

  • Заказы не удаляются: Проверьте, активен ли WP-Cron (на некоторых серверах он отключён). Для теста вызовите функцию wprus_delete_old_unpaid_orders() вручную.
  • Удаляются оплаченные заказы: Убедитесь, что в параметрах запроса указан статус pending, а не processing или completed.
  • Заказы не попадают в корзину, а удаляются сразу: Используйте wp_trash_post() вместо wp_delete_post() для безопасного удаления с возможностью восстановления.

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

  • Не удаляйте заказы сразу, а перемещайте в корзину. Это позволит восстановить данные при ошибках.
  • Ограничьте количество удаляемых заказов за один запуск, если база очень большая, чтобы не перегружать сервер.
  • Если WP-Cron не работает, настройте системный cron или вызовите wp-cron.php через планировщик сервера.

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

МетодПлюсыМинусыРекомендации
Ручное удаление через админкуПростота, контрольТрудозатратно, риск ошибокПодходит для мелких магазинов
Автоматизация через WP-Cron и кодПолный контроль, гибкостьТребует знаний, настройка cronОптимально для средних и крупных магазинов
Плагины очистки заказов (например, WooCommerce Order Cleaner)Удобно, готовое решениеЗависимость от стороннего кода, может быть избыточнымИспользовать при отсутствии желания писать код
Как создать автоматический Sitemap в WordPress с помощью кода
01.02.2026
Оптимизация загрузки шаблонов WordPress для ускорения сайта
29.01.2026
Как автоматизировать удаление старых оставленных комментариев в WordPress
12.04.2026
WooCommerce: как запретить отмену заказа по ролям пользователей
29.04.2026
Автоматическое создание резервной копии WordPress: лучшие плагины и кодовые решения
18.11.2025
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше