На сайтах с WooCommerce счётчик заказов в верхней панели админки быстро становится шумом. Это особенно заметно, если в админке работают менеджеры контента, редакторы или операторы, которым не нужен постоянный визуальный индикатор количества заказов. Сам WooCommerce этот бейдж не прячет по ролям из коробки, поэтому решение обычно делают кодом: либо убирают пункт из админ-бара, либо скрывают весь блок уведомлений для конкретных пользователей.
Задача здесь не в том, чтобы «выключить заказы», а в том, чтобы убрать лишний интерфейс только там, где он мешает. Ниже — рабочий сценарий без выдуманных хуков и без вмешательства в ядро.
Когда это действительно нужно
Сценарий встречается в двух типичных случаях. Первый — у магазина есть менеджеры, которые обрабатывают контент и не должны постоянно видеть служебные уведомления. Второй — на проекте много плагинов, и верхняя панель админки перегружена: бейджи заказов, обновлений, комментариев, уведомления от маркетинговых модулей. В такой среде счётчик заказов не помогает, а отвлекает.
Если у вас один администратор и небольшой магазин, прятать счётчик обычно нет смысла. Но если в админке работают несколько ролей, настройка становится полезной: интерфейс проще, меньше ложных кликов, меньше вопросов от сотрудников, которые не должны разбирать служебные индикаторы.
Диагностика: что именно показывает счётчик
Сначала важно понять, откуда берётся бейдж. В WooCommerce счётчик заказов в верхней панели обычно добавляется через стандартный admin bar. Это не отдельный виджет темы и не элемент фронтенда. Поэтому CSS-сокрытие на сайте не решает задачу: нужно либо убрать узел из admin bar, либо скрыть его для конкретной роли на стороне PHP.
Проверьте три вещи:
- счётчик виден в
/wp-admin/, а не на публичной части сайта; - он появляется у всех пользователей или только у отдельных ролей;
- нужен ли вам именно визуальный бейдж, а не доступ к разделу заказов.
Если бейдж добавляет не WooCommerce, а другой плагин, логика будет отличаться. В этом случае сначала отключите подозрительный плагин на тестовой копии и посмотрите, исчезает ли индикатор.
Как убрать счётчик заказов для выбранных ролей
Самый надёжный вариант — удалить нужный узел из админ-бара через хук admin_bar_menu. Для этого не нужно трогать шаблоны и не нужно править сам WooCommerce. Код можно добавить в functions.php дочерней темы или в небольшой mu-plugin.
Вариант 1: скрыть счётчик для редакторов и менеджеров
<?php
add_action( 'admin_bar_menu', 'wpbook_hide_wc_orders_counter_for_roles', 999 );
function wpbook_hide_wc_orders_counter_for_roles( $wp_admin_bar ) {
if ( ! is_user_logged_in() ) {
return;
}
$user = wp_get_current_user();
$roles = (array) $user->roles;
// Скрываем только для выбранных ролей.
$target_roles = array( 'editor', 'shop_manager' );
if ( ! array_intersect( $roles, $target_roles ) ) {
return;
}
// Узел может отличаться в зависимости от версии WooCommerce и окружения.
// Сначала проверяем стандартные варианты.
$possible_nodes = array(
'woocommerce-analytics',
'woocommerce-orders',
'wc-orders',
);
foreach ( $possible_nodes as $node_id ) {
$wp_admin_bar->remove_node( $node_id );
}
}
Этот подход безопаснее, чем скрывать всё через CSS: вы убираете именно элемент интерфейса, а не просто делаете его невидимым. Если в вашей установке ID узла отличается, откройте HTML админ-бара в браузере и посмотрите, какой id у нужного пункта.
Вариант 2: убрать только бейдж, оставить ссылку на заказы
Иногда нужен компромисс: менеджер должен быстро открыть заказы, но не видеть постоянный счётчик. Тогда лучше не удалять весь пункт, а отрисовать его без числа. Это уже зависит от того, как именно пункт добавлен в админ-бар, и в ряде случаев проще использовать фильтр или переопределение через собственный callback. Если в проекте нет жёсткой зависимости от конкретного бейджа, обычно достаточно первого варианта.
Альтернативы: код, плагин или настройка роли
Если задача временная или проект ведётся без разработчика, можно обойтись плагином для управления админ-баром. Но для точечного скрытия по ролям код обычно чище: меньше зависимостей, меньше риска, что обновление плагина сломает поведение.
| Подход | Когда подходит | Минус |
|---|---|---|
Код через admin_bar_menu | Нужна точечная настройка по ролям | Нужно понимать ID узла |
| Плагин для admin bar | Нет доступа к коду | Лишняя зависимость и риск конфликтов |
| CSS-скрытие | Только быстрый локальный фикс | Элемент остаётся в DOM и может мешать |
Проверка результата после внедрения
После добавления кода проверьте не только визуальный эффект, но и доступы. Это важный момент: скрытие счётчика не должно ломать переход в раздел заказов и не должно менять права пользователя.
- войдите под ролью, для которой включено скрытие;
- обновите страницу админки и проверьте верхнюю панель;
- убедитесь, что пункт заказов исчез или бейдж больше не отображается;
- перейдите в
WooCommerce → Заказыи проверьте, что раздел открывается; - войдите под администратором и убедитесь, что для него поведение не изменилось.
Если вы используете кэширование на уровне админки через сторонние плагины или нестандартные прокси-правила, очистите кэш после правки. Для проверки лучше открыть админку в приватном окне, чтобы исключить влияние старой сессии.
Частые ошибки и как их исправить
Неверный ID узла в admin bar
Самая частая проблема — код написан правильно, но удаляется не тот элемент. У WooCommerce и связанных расширений ID может отличаться от проекта к проекту. Решение простое: откройте инспектор браузера, найдите нужный пункт в верхней панели и сверяйте id или структуру HTML.
Код добавили в родительскую тему
Если правка внесена в родительскую тему, она может пропасть после обновления. Для постоянного решения используйте дочернюю тему или mu-plugin. Для небольших служебных правок mu-plugin часто даже удобнее: он не зависит от темы и загружается стабильно.
Скрыли через CSS и получили побочные эффекты
CSS-метод часто оставляет кликабельную область, пустое место или ломает выравнивание элементов админ-бара. Это не критично, но выглядит неряшливо и иногда мешает другим кнопкам. Если нужно именно убрать элемент, используйте PHP-удаление узла.
Проверяли не ту роль
Иногда пользователь имеет сразу несколько ролей, и условие срабатывает не так, как ожидалось. В таком случае сначала выведите роли текущего пользователя через временный error_log или через отладочный плагин, а потом уже фиксируйте список $target_roles.
Практические советы по безопасности и производительности
Для такой задачи не нужен тяжёлый плагин. Один небольшой фрагмент кода проще сопровождать и легче откатить. Но есть несколько правил, которые стоит соблюдать:
- не редактируйте ядро и файлы WooCommerce напрямую;
- храните правку в дочерней теме или mu-plugin;
- не отключайте элементы интерфейса для администратора, если он реально использует этот индикатор в работе;
- перед выкладкой на боевой сайт проверьте код на staging-копии;
- если в проекте уже есть плагин для управления admin bar, проверьте, не дублирует ли он вашу логику.
Если вам нужно не только убрать счётчик, но и навести порядок в админке в целом, имеет смысл посмотреть в сторону плагинов для очистки интерфейса и дублей элементов. Например, Clearfy Pro полезен там, где нужно убрать лишние служебные блоки и сократить визуальный шум, но для точечной задачи по ролям код всё равно остаётся самым предсказуемым вариантом.
Если счётчик возвращается после обновления
Такое бывает, когда узел добавляет не сам WooCommerce, а другое расширение, либо когда тема/плагин повторно регистрирует пункт в админ-баре позже вашего кода. В этом случае увеличьте приоритет хука, как в примере выше, и проверьте, не добавляется ли элемент на другом хуке. Иногда достаточно перенести код в mu-plugin, чтобы он выполнялся раньше и стабильнее.
Если после обновления WooCommerce структура админ-бара изменилась, не пытайтесь «лечить» это CSS-ом. Сначала найдите актуальный ID узла, затем обновите список $possible_nodes. Это быстрее и надёжнее, чем искать обходные пути.