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

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

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

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

Кроме того, с собственными статусами можно настроить уведомления, фильтры в админке и интеграции с другими системами, что значительно расширяет функционал WooCommerce.

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

Для регистрации нового статуса заказа требуется добавить его в массив статусов и зарегистрировать с помощью фильтров WooCommerce. Ниже пример функции, которая добавляет статус wc-awaiting-shipment с названием «Ожидает отгрузки».

add_action('init', 'wporder_register_custom_order_status');
function wporder_register_custom_order_status() {
    register_post_status('wc-awaiting-shipment', array(
        'label'                     => _x('Ожидает отгрузки', 'Order status', 'wporder'),
        '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>', 'wporder')
    ));
}

add_filter('wc_order_statuses', 'wporder_add_custom_order_statuses');
function wporder_add_custom_order_statuses($order_statuses) {
    $order_statuses['wc-awaiting-shipment'] = _x('Ожидает отгрузки', 'Order status', 'wporder');
    return $order_statuses;
}

После добавления этого кода в файл functions.php вашей темы или в кастомный плагин, статус появится в списке доступных.

Автоматизация смены статусов: пример использования хука

Часто требуется не только добавить статус, но и автоматически переводить заказы в него при наступлении определённых условий. Например, после оплаты можно установить статус «Ожидает отгрузки».

Для этого используйте хук woocommerce_order_status_changed и проверяйте переходы статусов.

add_action('woocommerce_order_status_processing', 'wporder_move_to_awaiting_shipment');
function wporder_move_to_awaiting_shipment($order_id) {
    $order = wc_get_order($order_id);
    // Проверяем дополнительные условия, если нужно
    $order->update_status('awaiting-shipment', 'Автоматический перевод в статус Ожидает отгрузки');
}

Этот код переводит заказ из статуса «В обработке» в «Ожидает отгрузки» автоматически после оплаты.

Плагины для управления и автоматизации статусов заказов WooCommerce

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

  • WooCommerce Order Status Manager — один из лучших плагинов для создания и управления пользовательскими статусами, позволяет создавать уведомления, действия и правила.
  • AutomateWoo — мощный инструмент для автоматизации маркетинга и рабочих процессов, в том числе смены статусов по триггерам.
  • Clearfy Pro — облегчает оптимизацию WooCommerce, включая управление процессами заказов и статусами.

Уведомления для новых статусов заказов

Чтобы клиенты и менеджеры не пропустили смену статуса, стоит настроить email-уведомления. Для пользовательских статусов уведомления не добавляются автоматически, их нужно создать вручную.

Пример добавления email уведомления для статуса «Ожидает отгрузки»:

add_filter('woocommerce_email_classes', 'wporder_add_custom_email_class');
function wporder_add_custom_email_class($email_classes) {
    require_once 'class-wc-email-awaiting-shipment.php'; // Ваш класс с реализацией email
    $email_classes['WC_Email_Awaiting_Shipment'] = new WC_Email_Awaiting_Shipment();
    return $email_classes;
}

Реализация собственного класса email требует отдельного файла с наследованием от WC_Email. Это позволяет настроить шаблон и логику отправки.

Вывод статусов в админке и на сайте

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

$order = wc_get_order($order_id);
echo $order->get_status(); // вернёт slug статуса
// или получить человекочитаемое название
echo wc_get_order_status_name($order->get_status());

Для более сложных сценариев можно создать шорткод или виджет, выводящий заказы по определённым статусам.

Резюме и рекомендации

Добавление собственных статусов заказов в WooCommerce — простой и мощный способ расширить функционал интернет-магазина под конкретные бизнес-процессы. Комбинируйте регистрацию статусов, автоматизацию смены с помощью хуков и уведомления, чтобы максимально упростить работу с заказами.

Если вы не хотите писать код, используйте проверенные плагины из каталога WPSHOP.RU. Они позволят настроить всё быстро и безопасно.

Как создать автоматический импорт товаров в WordPress из CSV файла
15.12.2025
Как автоматизировать управление строками заказов в WordPress
08.03.2026
Создание автоматических отчетов по проблемам и ошибкам в WordPress с примерами кода
07.01.2026
Как создать собственный шорткод с переходом между страницами в WordPress
23.11.2025
Создание персонализированного виджета WordPress
01.12.2025