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

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

По умолчанию WooCommerce автоматически меняет статус заказа при успешной оплате (например, на «Обработан» или «Выполнен»). Это удобно для большинства магазинов, но в ряде случаев необходимо вручную контролировать статусы заказов, например:

  • Если требуется проверка оплаты вручную или через стороннюю систему;
  • Если используются нестандартные статусы заказов;
  • Для предотвращения автоматической отправки уведомлений и запусков последующих процессов;
  • При интеграции с CRM или ERP, где статусы синхронизируются отдельно.

Если вы замечаете, что WooCommerce меняет статус заказа автоматически, а это приводит к ошибкам в бизнес-процессах, стоит отключить автообработку.

Как проверить текущее поведение автообработки заказов?

Создайте тестовый заказ с оплатой через любой платежный шлюз, например, «Чек» (Cash on Delivery) или «Оплата при доставке». После оплаты посмотрите в админке WooCommerce в разделе «Заказы», изменился ли статус автоматически или остался «Ожидает оплаты».

Если статус меняется на «Обработан» или «Выполнен»> без вашего участия, автообработка включена.

Пошаговое решение: отключаем автообработку заказов

1. Отключение автоматического изменения статуса заказа

Добавьте следующий код в файл functions.php вашей дочерней темы или в пользовательский плагин:

add_filter('woocommerce_payment_complete_order_status', 'disable_auto_order_status', 10, 3);
function disable_auto_order_status($status, $order_id, $order) {
    // Возвращаем исходный статус - не меняем автоматически
    return $order->get_status();
}

Этот фильтр отменит автоматическое присвоение статуса после оплаты.

2. Отключение автообработки для конкретных платежных методов

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

function disable_auto_order_status($status, $order_id, $order) {
    $payment_method = $order->get_payment_method();
    $methods_to_disable = array('cod', 'cheque'); // ID методов оплаты
    if (in_array($payment_method, $methods_to_disable)) {
        return $order->get_status();
    }
    return $status;
}
add_filter('woocommerce_payment_complete_order_status', 'disable_auto_order_status', 10, 3);

3. Настройка ручного изменения статусов

После отключения автообработки в админке WooCommerce зайдите в раздел «Заказы», выберите нужный заказ и вручную измените статус через выпадающий список «Статус заказа». Не забудьте нажать «Обновить».

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

  • Создайте новый тестовый заказ с оплатой через метод, для которого отключена автообработка;
  • Оплатите заказ (или пометьте как оплаченный в тестовом режиме);
  • Проверьте, что статус заказа не изменился автоматически, остался «Ожидает оплаты» или тот, который был;
  • Вручную измените статус заказа и убедитесь, что изменения сохраняются и уведомления работают корректно.

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

1. Статус меняется автоматом несмотря на код

  • Проверьте, что код добавлен именно в активную тему или плагин.
  • Убедитесь, что нет других плагинов, которые переопределяют статус (например, плагины для оплаты или автоматизации).
  • Очистите кеш сайта и браузера после внесения изменений.

2. Уведомления о смене статуса не приходят после ручного изменения

  • Проверьте настройки уведомлений в WooCommerce – возможно, они отключены.
  • Проверьте, что в редактировании заказа статус меняется через стандартный функционал WooCommerce.

3. Платёжные шлюзы игнорируют отключение

  • Некоторые шлюзы (например, PayPal, Stripe) сами меняют статус заказа через вебхуки. В этом случае нужно искать решение в настройках плагина шлюза или отлавливать их вебхуки.

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

  • Добавляя код, используйте дочернюю тему или отдельный плагин, чтобы не потерять изменения при обновлении.
  • Тестируйте изменения только на staging-сайте или в локальной среде перед переносом на живой сайт.
  • Отключение автоматической обработки может увеличить нагрузку на админов – используйте фильтры уведомлений, чтобы не пропустить новые заказы.
  • Если используете интеграцию с CRM, настройте синхронизацию статусов вручную или через API.

Сравнение подходов: отключение автообработки через код и плагины

МетодПлюсыМинусыКомпромисс
Код (фильтр woocommerce_payment_complete_order_status)Точный контроль, легкость поддержки, нет дополнительных плагиновТребует навыков, возможны конфликты с другими плагинамиИспользуйте дочернюю тему + отладку на тестовом окружении
Плагины (например, Custom Order Status Manager)Удобный интерфейс, дополнительные функции управления статусамиМожет замедлять сайт, зависимости от разработчикаВыбирайте проверенные плагины с хорошими отзывами
Как создать автоматические резервные копии WordPress без плохой нагрузки на сервер
17.03.2026
Как создать настройку в плагине WordPress для управления оптимизацией изображений
02.03.2026
Как удалить или отключить комментарии в WordPress на определённых страницах
17.01.2026
Как удалить и заблокировать неиспользуемые регистрации в WordPress с форумами
29.04.2026
Как отключить пагинацию в WordPress без плагинов
25.02.2026