WooCommerce из коробки предлагает ограниченный набор статусов заказов, таких как 'В ожидании', 'Обрабатывается', 'Завершён' и несколько других. Однако в реальном бизнесе часто требуется добавлять собственные статусы заказов для более точного управления процессом. В этой статье мы подробно рассмотрим, как добавить новые статусы заказов в WooCommerce и автоматизировать их смену с помощью кода.
Почему стоит использовать собственные статусы заказов в WooCommerce
Стандартные статусы не всегда покрывают все этапы обработки заказа. Например, если у вас есть дополнительный этап проверки или комплектации, или вы хотите выделить заказы, ожидающие подтверждения оплаты или доставки, собственные статусы помогут структурировать процесс.
Кроме того, с помощью собственных статусов можно настроить автоматическую смену статусов, уведомления клиентов и интеграцию с другими системами, что улучшит управление заказами и повысит прозрачность для клиентов и сотрудников.
Добавление нового статуса заказа в WooCommerce
Для начала зарегистрируем новый статус заказа. Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:
function wporder_register_custom_order_status() {
register_post_status( 'wc-awaiting-shipment', array(
'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>' ),
) );
}
add_action( 'init', 'wporder_register_custom_order_status' );Этот код создаёт новый статус wc-awaiting-shipment с ярлыком 'Ожидает отгрузки'. Важно использовать префикс wc- для статусов WooCommerce.
Добавление нового статуса в список доступных статусов заказов
Чтобы статус отображался в админке WooCommerce и мог быть выбран при редактировании заказа, нужно добавить его в список статусов:
function wporder_add_custom_order_statuses( $order_statuses ) {
$new_statuses = array();
foreach ( $order_statuses as $key => $status ) {
$new_statuses[ $key ] = $status;
if ( 'wc-processing' === $key ) {
$new_statuses['wc-awaiting-shipment'] = 'Ожидает отгрузки';
}
}
return $new_statuses;
}
add_filter( 'wc_order_statuses', 'wporder_add_custom_order_statuses' );Мы добавляем новый статус сразу после статуса 'Обрабатывается' (processing), но вы можете выбрать любое место.
Автоматическая смена статуса заказа по определённым условиям
Далее рассмотрим пример, как автоматически переводить заказ в статус 'Ожидает отгрузки' после успешной оплаты:
function wporder_automate_status_after_payment( $order_id ) {
if ( ! $order_id ) {
return;
}
$order = wc_get_order( $order_id );
if ( ! $order ) {
return;
}
// Проверяем, что заказ оплачен и в статусе 'processing'
if ( $order->is_paid() && 'processing' === $order->get_status() ) {
$order->update_status( 'awaiting-shipment', 'Автоматический переход в статус "Ожидает отгрузки" после оплаты' );
}
}
add_action( 'woocommerce_order_status_processing', 'wporder_automate_status_after_payment' );Этот код отслеживает момент, когда заказ переходит в статус 'processing' (обычно после оплаты) и меняет его на наш собственный статус.
Отображение собственного статуса в пользовательской части сайта
Чтобы клиенты видели новый статус в личном кабинете и на страницах заказа, WooCommerce автоматически подхватывает зарегистрированные статусы. Если хотите изменить отображение или добавить перевод, используйте фильтр woocommerce_my_account_my_orders_actions или добавьте локализацию.
Использование плагинов для расширения статусов заказов
Если не хотите писать код, можно использовать плагины, которые добавляют и автоматизируют статусы заказов. Рекомендуем обратить внимание на:
- Clearfy Pro — содержит инструменты для оптимизации и управления WooCommerce, включая расширенные статусы.
- Expert Review — помогает автоматизировать процессы с отзывами и статусами заказов.
Использование таких плагинов экономит время и упрощает интеграцию с другими функциями сайта.
Заключение и рекомендации по использованию
Добавление собственных статусов заказов в WooCommerce — мощный инструмент для тонкой настройки бизнес-процессов. Код, приведённый в статье, можно адаптировать под любые задачи: добавлять новые статусы, менять их порядок, автоматизировать переходы. Важно тестировать изменения на тестовом сайте перед внедрением в рабочем окружении.
Также не забывайте, что автоматизация статусов в связке с уведомлениями и отчетами значительно улучшит управление заказами и повысит лояльность клиентов.