WooCommerce: как автоматически обновлять статус заказа при возврате платежа

Проблема: статус заказа не обновляется при возврате платежа

Во многих интернет-магазинах на WooCommerce при возврате платежа (refund) статус заказа не меняется автоматически, что сбивает с толку и мешает управлению заказами. По умолчанию WooCommerce не обновляет статус заказа при создании возврата — это требует ручного вмешательства администратора.

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

Чтобы удостовериться, что проблема именно в автоматическом обновлении статуса, проверьте следующий сценарий:

  • В панели WooCommerce создайте возврат платежа к существующему заказу.
  • Обратите внимание, что статус заказа после возврата остается прежним (например, "Выполнен" или "Обработан"), а не меняется на "Возврат" или "Отменен".
  • Проверьте логи WooCommerce и хук woocommerce_order_refunded на предмет ошибок — их обычно нет, так как хук не используется для смены статуса.

Пошаговое решение: программное обновление статуса заказа при возврате платежа

Чтобы автоматически менять статус заказа при возврате платежа, нужно использовать хук woocommerce_order_refunded. Ниже пример кода, который обновит статус заказа на refunded сразу после создания возврата.

add_action('woocommerce_order_refunded', 'auto_update_order_status_on_refund', 10, 2); 
function auto_update_order_status_on_refund($order_id, $refund_id) {
    $order = wc_get_order($order_id);
    if (!$order) {
        return;
    }

    // Проверяем, что возврат действительно сделан
    $refund = wc_get_order($refund_id);
    if ($refund && $refund->get_refunds()) {
        $order->update_status('refunded', __('Автоматическое обновление статуса после возврата платежа', 'woocommerce'));
    }
}

Добавьте этот код в файл functions.php вашей дочерней темы или в отдельный плагин.

Пояснения к коду

  • Хук woocommerce_order_refunded срабатывает после создания возврата.
  • Функция получает объект заказа и объект возврата.
  • Статус заказа меняется на refunded с добавлением комментария для лога.

Как проверить, что решение работает

  1. Войдите в админку WooCommerce.
  2. Выберите любой заказ со статусом, например, "Выполнен".
  3. Создайте возврат платежа через интерфейс WooCommerce.
  4. Обновите страницу заказа и убедитесь, что его статус автоматически изменился на "Возврат" (refunded).
  5. Проверьте журнал заметок заказа — там должно появиться сообщение об автоматическом обновлении статуса.

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

  • Статус не меняется после возврата
    Проверьте, что код добавлен правильно и нет конфликтов с другими плагинами, особенно с кастомными модулями для возвратов.
  • Возврат создается, но хук не срабатывает
    Убедитесь, что возврат создается через стандартный механизм WooCommerce, а не вручную с помощью нестандартных методов.
  • Проблемы с правами доступа
    Код должен выполняться с правами администратора. Если используется сторонний плагин для возвратов, он может препятствовать обновлению статуса.

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

  • Добавляйте код в дочернюю тему или отдельный плагин, чтобы не потерять изменения при обновлении.
  • Не меняйте статус заказа на «отменён» без проверки, так как это может влиять на статистику продаж и отчёты.
  • Для крупных магазинов с большим количеством возвратов рекомендуем добавить логирование изменений статусов для аудита.
  • Если используете кэширование — очистите кэш после изменений статусов, чтобы администратор видел актуальные данные.

Сравнение способов автоматического обновления статуса заказа при возврате

МетодПримерПлюсыМинусы
Хук woocommerce_order_refundedPHP-код в functions.php (пример выше)Быстрая реализация, не требует плагинов, гибко настраиваетсяТребует базовых знаний PHP, возможны конфликты с плагинами
Плагины для управления возвратамиWooCommerce Refund and Exchange pluginsРасширенный функционал возвратов, поддержка, UIМожет быть платным, утяжеляет сайт
Ручное обновление статусаЧерез админку WooCommerceПростота, не требует кодаЧеловеческий фактор, риск ошибок и задержек
Как добавить уникальное метаполе к записям WordPress без плагинов
25.02.2026
Как отключить автоматическое обновление плагинов в WordPress
11.04.2026
WooCommerce: автоматическое удаление заказов по неоплаченным и отложенным статусам
25.05.2026
Как добавить дополнительные поля в формы WordPress без плагинов
28.01.2026
Как создать собственный шорткод в WordPress
31.10.2025