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

|

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

В интернет-магазинах на WooCommerce часто накапливаются заказы со статусом "корзина" (pending или abandoned) и неактивные заказы, которые не были завершены клиентами. Это увеличивает размер базы данных, замедляет работу сайта и усложняет аналитику. Автоматическое удаление таких записей помогает поддерживать чистоту данных и улучшать производительность.

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

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

1. Определяем критерии неактивности

Рекомендуется удалять заказы, которые не обновлялись более 30 дней и имеют статус pending или failed. Для корзин — аналогично, если данные о корзине хранятся в сессии или в заказах с соответствующим статусом.

2. Создаём PHP-функцию для удаления заказов

function wc_delete_inactive_orders() {
    global $wpdb;
    $days = 30;
    $time_limit = date('Y-m-d H:i:s', strtotime("-{$days} days"));

    $order_ids = $wpdb->get_col($wpdb->prepare(
        "SELECT ID FROM {$wpdb->prefix}posts
        WHERE post_type = 'shop_order'
        AND post_status IN ('wc-pending', 'wc-failed')
        AND post_date < %s",
        $time_limit
    ));

    if (!empty($order_ids)) {
        foreach ($order_ids as $order_id) {
            wp_delete_post($order_id, true);
        }
    }
}

3. Автоматизация с помощью WP-Cron

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

function wc_schedule_order_cleanup() {
    if (!wp_next_scheduled('wc_delete_inactive_orders_hook')) {
        wp_schedule_event(time(), 'daily', 'wc_delete_inactive_orders_hook');
    }
}
add_action('wp', 'wc_schedule_order_cleanup');

add_action('wc_delete_inactive_orders_hook', 'wc_delete_inactive_orders');

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

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

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

Сравнение подходов: плагин vs код vs компромисс

МетодПлюсыМинусыКомпромисс
Плагин (например, WP-Cleaner)Простота настройки, готовый интерфейсНагрузка, лишний плагин, может не подходить под логикуИспользовать плагин с минимальными функциями для очистки
Код (как в статье)Гибкость, лёгкость кастомизации, без лишних плагиновТребует навыков, возможны ошибки при написанииПисать код с логированием и постепенным запуском
КомбинированныйИспользовать код для базовой логики + плагин для интерфейсаСложность поддержки, возможен конфликтИспользовать WP-Cron с кастомным кодом и UI
WooCommerce: как программно удалять неактивные корзины и заказы без плагинов
21.06.2026
Как использовать внешние API в WordPress с помощью AJAX: практическое руководство
02.04.2026
Как добавить поддержку PHP 8 в WordPress без проблем
15.04.2026
Как массово изменить или удалить атрибуты alt и title у изображений в WordPress
19.03.2026
Как создать главный вывод текстовой информации в WordPress без плагинов
22.01.2026
×
-15%
на премиум плагин
My Popup

Повысьте конверсию!

Получить скидку »