WooCommerce: как добавить и использовать собственные статусы заказов

Что такое собственные статусы заказов в WooCommerce и зачем они нужны

Стандартные статусы заказов WooCommerce (например, «в обработке», «завершён», «отменён») подходят не для всех бизнес-процессов. Допустим, вам нужно добавить промежуточный статус, например, «ожидает проверки», «ожидает оплаты банковским переводом» или «требуется доставка курьером». Собственные статусы помогают лучше отражать реальное состояние заказа и автоматизировать логику работы с ними.

Диагностика: как понять, что нужны собственные статусы

  • Стандартные статусы не покрывают все этапы обработки заказа.
  • Требуется дополнительное уведомление клиентов или менеджеров для специфических этапов.
  • Автоматизация обработки заказов с разной логикой для новых этапов.
  • Неудобство в админке из-за необходимости постоянного ручного контроля.

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

1. Регистрация статуса заказов через хук init

function register_custom_order_statuses() {
    register_post_status( 'wc-awaiting-verification', array(
        'label'                     => _x( 'Ожидает проверки', 'Order status', 'woocommerce' ),
        'public'                    => true,
        'exclude_from_search'       => false,
        'show_in_admin_all_list'    => true,
        'show_in_admin_status_list' => true,
        'label_count'               => _n_noop( 'Ожидает проверки <span class="count">(%s)</span>', 'Ожидает проверки <span class="count">(%s)</span>', 'woocommerce' )
    ) );
}
add_action( 'init', 'register_custom_order_statuses' );

2. Добавление статуса в список доступных статусов WooCommerce

function add_custom_order_statuses( $order_statuses ) {
    $order_statuses['wc-awaiting-verification'] = _x( 'Ожидает проверки', 'Order status', 'woocommerce' );
    return $order_statuses;
}
add_filter( 'wc_order_statuses', 'add_custom_order_statuses' );

3. Использование нового статуса при создании и обновлении заказов

Можно программно установить статус заказа:

$order = wc_get_order( $order_id );
$order->update_status( 'awaiting-verification', 'Статус изменён на ожидает проверки программно.' );

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

  • В админке WooCommerce в списке заказов появился новый статус «Ожидает проверки».
  • При смене статуса заказа через интерфейс доступен новый статус.
  • При программном обновлении заказа статус корректно устанавливается и отображается.
  • Фильтр заказов по новому статусу работает без ошибок.

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

  • Статус не отображается в списках заказов — проверьте, что вы добавили статус и в register_post_status, и в фильтр wc_order_statuses.
  • Ошибка при смене статуса — убедитесь, что используете правильный ключ статуса с префиксом wc- в register_post_status, а при вызове update_status — без префикса.
  • Статус не виден клиентам — проверьте, что параметр public установлен в true и что шаблоны писем WooCommerce поддерживают новый статус (при необходимости добавьте кастомизацию шаблонов).

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

  • Не регистрируйте слишком много собственных статусов — это усложняет администрирование и может замедлить работу интерфейса.
  • Используйте переводы в label и label_count для поддержки мультиязычности.
  • При автоматической смене статусов через CRON или хуки убедитесь в проверке прав пользователя и наличии nonce для безопасности.

Чек-лист для добавления собственных статусов заказов в WooCommerce

  1. Создать функцию регистрации статуса с правильными параметрами и добавить в init.
  2. Добавить статус в список wc_order_statuses через фильтр.
  3. Проверить работу в админке — отображение и изменение статуса.
  4. Добавить поддержку нового статуса в шаблоны уведомлений, если нужно.
  5. Протестировать программную смену статуса заказов.
  6. Проверить фильтры и отчёты по новым статусам.

Сравнение способов реализации собственных статусов заказов

СпособПлюсыМинусы
Регистрация через register_post_status + wc_order_statusesПолное интегрирование в WooCommerce, поддержка UI и фильтров, гибкостьТребует написания кода, базовые знания хуков
Использование плагинов (например, "WooCommerce Order Status Manager")Простота настройки, UI для управления статусами, без кодаПлатные решения, дополнительный плагин — нагрузка на сайт
Использование метаполей вместо статусовМожно быстро добавить дополнительные признакиНет поддержки UI WooCommerce, сложно фильтровать и работать с отчетами
WooCommerce: как добавить и использовать собственные статусы заказов
28.06.2026
WooCommerce не работает отправка писем после обновления: диагностика и решение
26.04.2026
WooCommerce: как автоматически удалять неактивные товары через CRON
11.06.2026
Как создать поле выпадающий список в админке WordPress с сохранением значений
28.01.2026
Как создать собственный шорткод в WordPress
06.11.2025