wpcompany.ru wordpress WPCompany

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

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

WooCommerce по умолчанию содержит ограниченный набор статусов заказов (например, pending, processing, completed). Иногда бизнес-процессы требуют более детальной классификации заказов, например, статус "Ожидание оплаты по счету" или "Требуется подтверждение". Без кастомных статусов сложно автоматизировать обработку и отчеты.

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

Для добавления нового статуса нужно зарегистрировать его с помощью хука init и добавить в список статусов для отображения в админке.

Шаг 1. Регистрируем новый статус заказа

add_action('init', function() {
    register_post_status('wc-awaiting-payment', array(
        'label'                     => 'Ожидание оплаты по счету',
        'public'                    => true,
        'exclude_from_search'       => false,
        'show_in_admin_all_list'    => true,
        'show_in_admin_status_list' => true,
        'label_count'               => _n_noop('Ожидание оплаты (%s)', 'Ожидание оплаты (%s)')
    ));
});

Шаг 2. Включаем новый статус в список статусов WooCommerce

add_filter('wc_order_statuses', function($order_statuses) {
    $order_statuses['wc-awaiting-payment'] = 'Ожидание оплаты по счету';
    return $order_statuses;
});

Шаг 3. Добавляем статус для массовых действий в админке

add_action('admin_footer', function() {
    if ('edit.php' != get_current_screen()->base || 'shop_order' != get_post_type()) {
        return;
    }
    ?>
    <script>
    jQuery(function($){
        $('select[name="action"]').append('<option value="mark_awaiting-payment">Отметить как "Ожидание оплаты"</option>');
        $('select[name="action2"]').append('<option value="mark_awaiting-payment">Отметить как "Ожидание оплаты"</option>');
    });
    </script>
    <?php
});

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

  • В разделе Заказы → Все заказы появится новый статус "Ожидание оплаты по счету" в фильтрах и списке заказов.
  • При редактировании заказа в поле статусов можно выбрать новый статус.
  • В массовых действиях на странице заказов теперь доступен пункт для смены статуса на "Ожидание оплаты по счету".

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

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

  • Статус не отображается в админке. Возможно, забыли добавить статус в wc_order_statuses фильтр или не указали параметр show_in_admin_all_list как true при регистрации.
  • Массовые действия не работают. Проверьте, что скрипт для добавления опций в селект загружается только на странице заказов и что значения опций начинаются с mark_.
  • Статус не отображается в отчетах. WooCommerce некоторые отчеты жестко привязывает к дефолтным статусам. Для сложных отчетов потребуется кастомизация или расширяющие плагины.

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

  • Регистрируйте статусы только один раз, например, в init с проверкой контекста, чтобы избежать дублирования и ошибок.
  • Минимизируйте использование inline-скриптов — лучше добавляйте JS через wp_enqueue_script, особенно если статусов много.
  • Для часто используемых пользовательских статусов можно добавить автоматические уведомления по email с помощью хука woocommerce_order_status_{new_status}.

Резюме и чек-лист для внедрения собственного статуса заказа в WooCommerce

  1. Добавить регистрацию статуса через register_post_status.
  2. Добавить статус в список через фильтр wc_order_statuses.
  3. Добавить опцию для массовых действий в админке.
  4. Проверить отображение в списке заказов и фильтрах.
  5. Проверить возможность смены статуса на странице заказа.
  6. Отладить возможные ошибки отображения.
×

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

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

пишет статьи

готовит SEO

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

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