Автоматический возврат товара в WooCommerce после отмены заказа

|

В чем суть проблемы с возвратом товаров после отмены заказа в WooCommerce

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

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

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

Реализуем обработку события смены статуса заказа на "cancelled" и "refunded", чтобы автоматически возвращать количество товаров на склад.

add_action('woocommerce_order_status_cancelled', 'custom_restore_stock_on_cancelled_order');
add_action('woocommerce_order_status_refunded', 'custom_restore_stock_on_cancelled_order');

function custom_restore_stock_on_cancelled_order($order_id) {
    $order = wc_get_order($order_id);
    if (!$order) return;

    // Проверяем, не была ли уже восстановлена складская доступность
    if (get_post_meta($order_id, '_stock_restored', true)) {
        return;
    }

    foreach ($order->get_items() as $item_id => $item) {
        $product = $item->get_product();
        if (!$product || !$product->managing_stock()) continue;

        $qty = $item->get_quantity();
        // Увеличиваем складское количество
        wc_update_product_stock($product, $qty, 'increase');
    }

    // Отмечаем, что склад был восстановлен для этого заказа
    update_post_meta($order_id, '_stock_restored', 1);
}

Этот код подключается к событиям смены статуса, проверяет, не была ли уже выполнена операция возврата, и увеличивает количество товаров на складе на количество из заказа.

Почему важна проверка мета-поля _stock_restored?

Чтобы избежать двойного возврата при повторных сменах статуса, мы ставим флаг. Без этого при повторном выставлении статуса "cancelled" количество будет увеличено повторно, и склад будет «переполнен».

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

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

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

Сравнение вариантов решения возврата товара в WooCommerce

МетодОписаниеПлюсыМинусы
Встроенный механизм WooCommerce (ручной возврат) Использование кнопки "Возврат товара" в заказе Простота, поддержка стандартом Требует ручного действия, возможны ошибки
Код из статьи (автоматический возврат на события) Автоматический возврат при смене статуса заказа Автоматизация, снижает ошибки, контролируемый код Требует внедрения и тестирования, не учитывает сторонние плагины
Плагины управления запасами Расширенный контроль запасов, интеграции Готовые решения, дополнительные функции Платные, возможны конфликты с кастомным кодом
WooCommerce: как автоматически удалять заказы по определённому статусу
31.05.2026
Как удалить лишние мета-поля в WordPress без плагинов: новое решение
23.01.2026
Как использовать REST API WordPress для запроса пользователей по мета-полям
13.04.2026
Как удалить все посты из определённой категории в WordPress через код
30.01.2026
WooCommerce: как автоматически удалять заказы по определённому статусу
24.05.2026
×

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

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

пишет статьи

готовит SEO

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

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