wpcompany.ru wordpress WPCompany

WooCommerce: как установить собственные статусы заказа и отобразить их в админке

Диагностика задачи: зачем нужны собственные статусы заказа в WooCommerce

Стандартный набор статусов WooCommerce часто недостаточен для бизнес-процессов с нестандартной логикой обработки заказов. Например, нужны статусы «Ожидание оплаты на складе», «В проверке качества» или «Требует подтверждения». Без кастомных статусов нельзя точно отслеживать этапы и автоматизировать уведомления.

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

Пошаговое решение: добавляем и регистрируем новые статусы

1. Регистрируем статус и добавляем его в список статусов WooCommerce

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

add_action('init', 'register_custom_order_statuses');
function register_custom_order_statuses() {
    register_post_status('wc-awaiting-stock', [
        'label' => 'Ожидание на складе',
        '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>')
    ]);
}

2. Добавляем статус в список доступных заказов и фильтров

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

add_filter('wc_order_statuses', 'add_custom_order_statuses_to_list');
function add_custom_order_statuses_to_list($order_statuses) {
    $order_statuses['wc-awaiting-stock'] = 'Ожидание на складе';
    return $order_statuses;
}

3. Используем новый статус в админке и при смене статуса

Теперь при редактировании заказа в админке можно выбрать «Ожидание на складе». Можно также использовать хук woocommerce_order_status_{status} для запуска автоматических действий.

add_action('woocommerce_order_status_wc-awaiting-stock', 'notify_warehouse_about_order');
function notify_warehouse_about_order($order_id) {
    $order = wc_get_order($order_id);
    // Ваш код уведомления склада
}

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

  • Перейдите в админку WooCommerce → Заказы. В фильтрах появится новый статус «Ожидание на складе».
  • Откройте заказ — в списке статусов в правом блоке теперь доступен ваш новый статус.
  • Измените статус заказа на новый и сохраните — проверьте, что в списке заказов фильтрация по новому статусу работает.
  • Если вы реализовали дополнительные действия по смене статуса (например, уведомление), проверьте их работоспособность.

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

  • Статус не отображается в выпадающем списке
    Причина: не добавлен в фильтр wc_order_statuses или не указаны параметры show_in_admin_status_list и show_in_admin_all_list при регистрации.
  • Ошибки при смене статуса
    Причина: неверный префикс статуса или пропущен wc-. Все статусы должны начинаться с wc-.
  • Автоматические действия не срабатывают
    Причина: неправильное имя хука. Для статуса wc-awaiting-stock хук будет woocommerce_order_status_wc-awaiting-stock.
  • Статус не участвует в отчетах
    По умолчанию WooCommerce учитывает только стандартные статусы. Для включения кастомных возможно придется доработать отчеты или использовать плагины.

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

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

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

ВариантПлюсыМинусыПример кода
Ручная регистрация через хукиПолный контроль, минимально влияет на сайтТребует навыков, больше кода
register_post_status(...)
add_filter('wc_order_statuses', ...)
Плагины для кастомных статусовБыстро и удобно, готовые UIЗависимость от плагина, возможные конфликтыWooCommerce Order Status Manager
Изменение стандартных статусовПростотаНарушение логики WooCommerce, ошибкиНе рекомендуется
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше