wpdownload.ru wordpress WPDownload.ru

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

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

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

Проблема возникает, когда магазин автоматически меняет статус заказов на processing или completed, и это нежелательно — особенно при ручной обработке или нестандартных методах оплаты.

Как отключить автоматическое подтверждение заказов в WooCommerce

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

Чтобы отключить автоматическое переключение статусов заказов, можно переопределить обработчики статусов через хуки WooCommerce. Самый простой способ — перехватить событие смены статуса и блокировать автоматическое обновление.

Например, для отмены автоматического перевода в processing сразу после оплаты:

add_action('woocommerce_thankyou', 'disable_auto_processing_status', 1, 1); function disable_auto_processing_status($order_id) {     if (!$order_id) return;      $order = wc_get_order($order_id);     if (!$order) return;      // Если статус заказа processing, вернуть обратно в pending     if ($order->get_status() === 'processing') {         $order->update_status('pending');     } }

Этот код возвращает статус заказа в pending после его автоматического перевода в processing. Это простой способ предотвратить автоматическое подтверждение.

Более гибкий подход: отключение автообработки для конкретных способов оплаты

Если нужно отключить автообработку только для некоторых платежных методов, используем фильтр woocommerce_payment_complete_order_status:

add_filter('woocommerce_payment_complete_order_status', 'custom_payment_complete_status', 10, 3); function custom_payment_complete_status($status, $order_id, $order) {     $disable_auto_confirm_methods = ['cheque', 'bacs']; // ID способов оплаты для отключения     if (in_array($order->get_payment_method(), $disable_auto_confirm_methods)) {         return 'pending'; // Оставляем заказ в ожидании         }     return $status; }

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

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

  • Оформите тестовый заказ выбранным способом оплаты (например, cheque или bacs).
  • Завершите оплату (если это тестовый режим, имитируйте успешное завершение).
  • Проверьте статус заказа в админке WooCommerce.
  • Статус должен оставаться pending, а не автоматически сменяться на processing или completed.

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

  • Код не срабатывает для некоторых платежных методов: убедитесь, что указаны правильные ID методов оплаты (например, cheque, bacs, cod и т.п.). Проверьте в настройках WooCommerce.
  • Статус заказа меняется обратно после обновления страницы: возможно, другой плагин или тема вмешивается в смену статусов. Для диагностики отключите сторонние плагины и проверьте снова.
  • Вы не видите изменений в статусах: очистите кеш сайта и браузера, если используете кеширующие плагины.

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

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

Сравнение вариантов отключения автоматического подтверждения заказов

Метод Преимущества Недостатки
Перевод статуса после оплаты через woocommerce_thankyou Простой код, универсален Менее гибкий, влияет на все платежи
Использование фильтра woocommerce_payment_complete_order_status Гибкий, позволяет задать исключения по способам оплаты Нужно знать ID платежных методов
Плагины для управления статусами заказов Графический интерфейс, расширенные настройки Может замедлять сайт, требует обновлений

Чек-лист для отключения автоматического подтверждения заказов в WooCommerce

  • Определите, какие способы оплаты требуют ручного подтверждения.
  • Добавьте кастомный код в functions.php или плагин.
  • Тестируйте оформление заказа с этими способами оплаты.
  • Проверьте статус заказа в админке после оплаты.
  • Исправьте ошибки, если статус меняется автоматически.
  • Проверьте совместимость с другими плагинами и темой.
  • Обеспечьте резервное копирование перед внесением изменений.
×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙