WooCommerce: как убрать статус «Оплаченное» из фильтра заказов в админке

Проблема: статус «Оплаченное» отображается в фильтрах заказов WooCommerce без нужды

В стандартной админке WooCommerce в списке заказов есть фильтр по статусам заказов. Иногда появляется необходимость убрать из этого списка определённые статусы, например, «Оплаченное» ("processing" или "completed"), если вы используете кастомные статусы или хотите упростить интерфейс для менеджеров.

Но WooCommerce не предоставляет удобного UI для этого, поэтому требуется вмешательство через код.

Диагностика проблемы

Для начала уточним, что именно выводится в фильтре заказов:

  • Стандартные статусы WooCommerce: pending, processing, on-hold, completed, cancelled, refunded, failed.
  • Иногда добавляются кастомные статусы.

Если в фильтре присутствует статус, который вы не хотите видеть, можно проверить, откуда он берётся. Фильтр статусов формируется в функции wc_get_order_statuses(), которая возвращает массив статусов с префиксом wc-.

Как проверить, какие статусы выводятся в фильтре

add_action('restrict_manage_posts', function() {
    if (get_post_type() !== 'shop_order') {
        return;
    }
    $statuses = wc_get_order_statuses();
    echo '<pre>';
    print_r($statuses);
    echo '</pre>';
});

После добавления этого кода в functions.php вы увидите массив статусов в админке заказов.

Пошаговое решение: убрать статус из фильтра заказов

Чтобы убрать статус, нужно отфильтровать список статусов, который возвращает WooCommerce, используя хук 'woocommerce_order_statuses'.

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

add_filter('woocommerce_order_statuses', 'remove_completed_status_from_order_filter');
function remove_completed_status_from_order_filter($order_statuses) {
    if (isset($order_statuses['wc-completed'])) {
        unset($order_statuses['wc-completed']);
    }
    return $order_statuses;
}

Подставьте нужный статус, например, wc-processing для «Обрабатывается» или любой другой.

Удаление нескольких статусов

add_filter('woocommerce_order_statuses', 'remove_multiple_statuses_from_order_filter');
function remove_multiple_statuses_from_order_filter($order_statuses) {
    $remove = ['wc-completed', 'wc-processing'];
    foreach ($remove as $status) {
        if (isset($order_statuses[$status])) {
            unset($order_statuses[$status]);
        }
    }
    return $order_statuses;
}

Проверка результата

После добавления кода в functions.php или в кастомный плагин:

  1. Зайдите в админку WordPress → WooCommerce → Заказы.
  2. В верхней части страницы найдите выпадающий список фильтра по статусам заказов.
  3. Проверьте, что статус «Оплаченное» (например, Completed) исчез из списка.
  4. Попробуйте отфильтровать заказы по другим статусам, чтобы убедиться, что остальные работают корректно.

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

  • Неправильный ключ статуса: WooCommerce использует ключи с префиксом wc-, например, wc-completed. Проверяйте точное имя через wc_get_order_statuses().
  • Кэширование админки: Иногда изменения не видны из-за кэша браузера или серверного кэша. Очистите кэш и перезагрузите страницу.
  • Конфликты с плагинами: Некоторые плагины могут переопределять список статусов. Проверьте, не мешают ли сторонние расширения.
  • Добавление кода в неправильное место: Код нужно добавлять в файл functions.php вашей активной темы или в кастомный плагин, а не в шаблон темы.

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

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

Сравнение способов скрытия статусов в фильтре WooCommerce

МетодПлюсыМинусы
Фильтр woocommerce_order_statusesПростой, быстрое решение без плагиновТребует знания правильных ключей, может конфликтовать с плагинами
Использование плагина кастомизации админкиУдобный UI, расширенные настройкиДополнительная нагрузка, может быть избыточно
Изменение шаблонов WooCommerceПолный контроль над выводомСложнее в поддержке, требует обновления при апдейтах
Как избежать конфликтов между плагинами WordPress: практические советы и примеры кода
11.01.2026
Как добавить собственные поля в WordPress без плагинов
10.11.2025
Как создать автоматический отчет о проблемах с безопасностью в WordPress
04.03.2026
Отсрочка загрузки картинок (Lazy Load) в WordPress с поддержкой WooCommerce
25.12.2025
Как использовать REST API для создания кастомных эндпоинтов в WordPress
22.12.2025