wppartner.ru wordpress WP Partner

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

Почему стоит использовать собственные статусы заказов в WooCommerce

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

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

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

  • Невозможно отделить заказы, ожидающие проверки оплаты, от оплаченных;
  • Отсутствуют статусы для предзаказов или кастомных сценариев;
  • Требуется интеграция с внешними системами, которые используют свои статусы;

тогда добавление собственных статусов — ваш путь решения.

Пошаговое руководство по добавлению собственного статуса заказа

1. Регистрируем статус с помощью хука init

add_action('init', 'register_custom_order_statuses');
function register_custom_order_statuses() {
    register_post_status('wc-awaiting-confirmation', 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')
    ));
}

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

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

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

Теперь новый статус отображается в админке и доступен для установки через интерфейс. Чтобы программно изменить статус заказа, используйте:

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

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

  • В админке WooCommerce в списке заказов появится новый статус с правильным отображением счетчика.
  • В карточке заказа можно выбрать и применить новый статус вручную.
  • При программном изменении статуса заказ сохраняет новый статус, и он отображается в списке.

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

  • Статус не отображается в списке заказов — проверьте, что в register_post_status установлены параметры 'show_in_admin_all_list' => true и 'show_in_admin_status_list' => true.
  • Новый статус не появляется в выпадающем списке при редактировании заказа — убедитесь, что фильтр wc_order_statuses корректно возвращает массив с вашим статусом, без ошибок и конфликтов с другими плагинами.
  • Статус не меняется программно — проверьте правильность идентификатора статуса (без префикса wc- при вызове update_status).

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

  • Добавляйте коды регистрации и фильтры в собственный плагин или в functions.php дочерней темы, чтобы избежать потерь при обновлении.
  • Проверяйте совместимость с другими плагинами, которые могут переопределять статусы заказов.
  • Не создавайте слишком много статусов — это усложняет администрирование и может негативно влиять на производительность запросов.
  • Используйте транслит английская для slug статусов — это стандарт WooCommerce и снижает риски конфликтов.

Сравнение способов добавления статусов: плагин vs код

МетодПлюсыМинусы
Ручной код (как в статье)Гибкость, полное управление, отсутствие лишних плагиновТребует навыков, риск ошибок при обновлениях
Плагин (например, Custom Order Status Manager)Простота настройки, интерфейс для управления статусамиДополнительная нагрузка, зависимость от плагина
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее