WooCommerce: как использовать хук woocommerce_order_status_processing для автоматизации задач

Что такое хук woocommerce_order_status_processing и когда он срабатывает

Хук woocommerce_order_status_processing срабатывает в момент, когда статус заказа в WooCommerce меняется на «Обрабатывается» (processing). Этот статус обычно означает, что оплата прошла успешно, и магазин готовит заказ к отправке. Использование этого хука позволяет разработчикам запускать произвольные действия, связанные с обработкой заказа, например, отправлять кастомные уведомления, менять метаданные заказа или интегрировать внешние сервисы.

Диагностика: почему нужно использовать именно этот хук

Если у вас есть задача выполнить код после подтверждения оплаты, но до смены статуса заказа на «Выполнен» (completed), этот хук — оптимальное место. Например, для автоматической генерации трек-номера, уведомления склада или обновления CRM. Альтернативные хуки, такие как woocommerce_payment_complete или woocommerce_order_status_changed, либо срабатывают слишком рано, либо требуют дополнительной проверки статуса.

Пошаговое решение: как подключить и использовать хук

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

add_action('woocommerce_order_status_processing', 'custom_processing_order_action', 10, 1);

function custom_processing_order_action( $order_id ) {
    if ( ! $order_id ) {
        return;
    }

    $order = wc_get_order( $order_id );

    // Пример: добавить заметку к заказу
    $order->add_order_note('Автоматическая заметка: заказ перешел в статус Обрабатывается.');

    // Пример: отправить кастомное письмо клиенту
    $mailer = WC()->mailer();
    $mails = $mailer->get_emails();
    if ( ! empty( $mails ) ) {
        $custom_email = $mails['WC_Email_Customer_Processing_Order'];
        if ( $custom_email ) {
            $custom_email->trigger( $order_id );
        }
    }

    // Пример: обновить метаданные заказа
    $order->update_meta_data( '_custom_processing_flag', 'yes' );
    $order->save();
}

3. Сохраните изменения и загрузите файл на сервер.

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

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

  • Создайте тестовый заказ и оплатите его (можно использовать тестовый платеж через Sandbox).
  • Проверьте в админке WooCommerce, что в заказе появилась заметка с текстом Автоматическая заметка: заказ перешел в статус Обрабатывается..
  • Убедитесь, что покупатель получил письмо с уведомлением о статусе заказа (если включено отправление почты).
  • Проверьте в базе данных или через плагин для просмотра метаданных заказов, что метаданные _custom_processing_flag установлены в значение yes.

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

  • Хук не срабатывает: убедитесь, что платеж действительно переводит заказ в статус processing, а не сразу в completed или другой статус. Некоторые платежные шлюзы могут использовать альтернативные статусы.
  • Функция не получает ID заказа: проверяйте, что параметр $order_id передается в функцию. Иногда при неправильном использовании хуков это значение может быть пустым.
  • Письмо не отправляется: проверьте настройки электронной почты WooCommerce, убедитесь, что сервер отправки почты корректно настроен, а также что в массиве писем действительно есть WC_Email_Customer_Processing_Order.
  • Изменения не сохраняются: после обновления метаданных не забудьте вызвать $order->save(), иначе данные не сохранятся.

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

  • Если в обработчике вы вызываете внешние API, используйте асинхронные запросы или очереди, чтобы не замедлять процесс смены статуса.
  • Не храните слишком много данных в метаданных заказа, особенно если они не нужны постоянно — это замедляет загрузку заказов в админке.
  • Для комплексных автоматизаций рассмотрите использование вебхуков или очередей задач (например, WP-Cron или внешние очереди), чтобы разгрузить процесс обработки заказа.

Сравнение способов автоматизации на стадии обработки заказа

МетодПреимуществаНедостаткиПример
Хук woocommerce_order_status_processingСрабатывает сразу при смене статуса, прямой доступ к заказуБлокирует процесс смены статуса, если тяжелый кодДобавление заметок, отправка писем
Хук woocommerce_order_status_changedГибкий, срабатывает на любую смену статусаНужно проверять текущий и предыдущий статусУсловная логика для разных статусов
Вебхуки WooCommerceИнтеграция с внешними сервисами без нагрузки на сайтЗависит от внешних сервисов, задержки в доставкеОтправка данных в CRM
WooCommerce: как исправить невозможность отмены заказа после оплаты
15.06.2026
Как использовать хук woocommerce_order_status_changed для автоматизации задач в WooCommerce
29.05.2026
WooCommerce: как исправить проблему с не обновляющимися статусами заказов после оплаты
04.07.2026
Как использовать метаданные товаров для оптимизации WooCommerce
23.05.2026
WooCommerce: как исключить товары по атрибуту из поиска и фильтров
19.06.2026