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. Они позволят настроить всё быстро и безопасно.