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

|

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

По умолчанию WooCommerce не всегда корректно обновляет остатки товара на складе, если заказ отменяется вручную или автоматически. Это приводит к неверному учету товаров и может вызвать проблемы при дальнейших продажах, например, показывать товар как "нет в наличии" при фактическом наличии.

Основные признаки проблемы:

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

1. Использование стандартного хука WooCommerce для отмены заказа

WooCommerce генерирует событие woocommerce_order_status_cancelled при смене статуса заказа на 'отменён'. Мы можем добавить обработчик, который вернёт остатки товаров на склад.

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

add_action('woocommerce_order_status_cancelled', 'custom_restore_stock_on_cancelled_order', 10, 1);
function custom_restore_stock_on_cancelled_order( $order_id ) {
    if ( ! $order_id ) {
        return;
    }
    $order = wc_get_order( $order_id );
    if ( ! $order ) {
        return;
    }
    // Для каждого товара в заказе восстанавливаем склад
    foreach ( $order->get_items() as $item_id => $item ) {
        $product = $item->get_product();
        if ( $product && $product->managing_stock() ) {
            $qty = $item->get_quantity();
            // Восстанавливаем количество на складе
            wc_update_product_stock( $product, $qty, 'increase' );
        }
    }
}

3. Обработка отмены заказа через другие статусы

Если у вас есть другие статусы, при которых требуется возврат товара на склад (например, 'failed', 'refunded'), добавьте обработчики аналогично:

add_action('woocommerce_order_status_refunded', 'custom_restore_stock_on_refunded_order', 10, 1);
function custom_restore_stock_on_refunded_order( $order_id ) {
    // Логика аналогична предыдущей функции
}

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

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

1. Возврат товара не происходит после отмены

2. Остаток увеличивается неправильно или дублируется

3. Код вызывает ошибки PHP

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

Сравнение вариантов возврата товара на склад после отмены заказа

СпособПлюсыМинусы
Встроенный функционал WooCommerceНе требует кода, прост в использованииНе всегда срабатывает корректно при ручных отменах
Кастомный код на хуках (пример выше)Гибкий, точечный контроль, можно расширятьТребует знаний PHP, может конфликтовать с плагинами
Плагины для управления складомИнтерфейс, дополнительные функции управления запасамиДополнительные затраты, возможны конфликты, нагрузка
Как автоматически удалять неиспользуемые шорткоды в WordPress
16.02.2026
WooCommerce: как автоматически очищать корзину после успешной оплаты
27.04.2026
WooCommerce: как автоматически удалять отзывы о товарах через заданный период
30.04.2026
Безопасное управление WordPress через SSH с помощью PHP: практическое руководство
04.01.2026
WooCommerce: как автоматически удалять товары из корзины после оплаты
11.05.2026
×

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

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

пишет статьи

готовит SEO

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

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