wpmake.ru wordpress WPMake

Как отключить счётчик количества товаров в корзине WooCommerce на отдельных страницах

Счётчик количества товаров в корзине в WooCommerce часто нужен на витрине, но мешает на лендингах, в шапке мобильной версии или на страницах, где корзина используется как компактный индикатор, а не как полноценный виджет. Типичный сценарий: дизайнер просит убрать цифру рядом с иконкой корзины на части страниц, а разработчик не хочет ломать мини-корзину, AJAX-обновление и логику темы.

Задача решается без правки ядра WooCommerce. Обычно достаточно понять, откуда именно выводится счётчик: это может быть мини-корзина темы, виджет, кастомный хук в шапке или фрагмент, который обновляется через AJAX. Ниже — рабочий способ диагностики и несколько вариантов отключения, чтобы не стрелять по всему магазину сразу.

Когда счётчик лучше убрать, а когда не трогать

Если цифра в корзине помогает пользователю ориентироваться, её лучше оставить. Но на некоторых проектах она создаёт лишний шум: в шапке слишком много элементов, счётчик дублируется в нескольких местах, а на посадочных страницах он отвлекает от CTA. Ещё один частый случай — счётчик показывается как «0» даже там, где корзина не используется, и это выглядит как недоделка.

Не стоит отключать счётчик, если он завязан на сценарий быстрого заказа или если тема использует его как часть интерфейса мини-корзины. В таком случае лучше скрыть только визуальный элемент, не ломая сам механизм обновления корзины.

Диагностика: откуда берётся счётчик

Перед правкой кода нужно понять, кто именно выводит цифру. В WooCommerce это не всегда стандартный шаблон. На практике счётчик может быть:

  • частью мини-корзины темы;
  • элементом, добавленным через wp_nav_menu_items или похожий фильтр;
  • виджетом WooCommerce Cart;
  • кастомным HTML в header.php или через конструктор;
  • фрагментом, который обновляется через woocommerce_add_to_cart_fragments.

Самый быстрый способ — открыть страницу в браузере, найти элемент счётчика через DevTools и посмотреть его класс или атрибуты. Если цифра меняется после добавления товара, значит, она обновляется AJAX-фрагментом. Если нет — это статический вывод темы.

Что проверить в первую очередь

  • Есть ли у счётчика отдельный CSS-класс.
  • Появляется ли он в DOM только на страницах магазина.
  • Обновляется ли он после добавления товара в корзину.
  • Не дублируется ли он в мобильном и десктопном хедере.

Решение через код: отключить счётчик только на нужных страницах

Если счётчик добавлен темой через хук, проще всего убрать его условно. Ниже пример, который снимает вывод счётчика на страницах, где он не нужен. Название хука у темы может отличаться, поэтому сначала найдите реальный add_action в файлах темы или в дочерней теме.

<?php
add_action( 'wp', function () {
    if ( is_page( array( 'landing', 'about' ) ) ) {
        remove_action( 'storefront_header', 'storefront_header_cart', 60 );
    }
} );

Этот пример показательный: storefront_header_cart — это функция темы Storefront, а не универсальный хук WooCommerce. В вашем проекте нужно подставить реальную функцию или callback, который отвечает за вывод счётчика. Смысл подхода в том, чтобы отключать не WooCommerce целиком, а только конкретный вывод в конкретном месте.

Если счётчик выводится через фильтр HTML, можно отрезать только числовую часть. Это полезно, когда иконка корзины должна остаться, а цифра — нет.

<?php
add_filter( 'woocommerce_add_to_cart_fragments', function ( $fragments ) {
    if ( is_page( array( 'landing', 'about' ) ) ) {
        $fragments['span.cart-count'] = '<span class="cart-count"></span>';
    }

    return $fragments;
} );

Такой вариант работает только если тема действительно использует фрагмент span.cart-count. Ключ в массиве должен совпадать с тем, что выводится на фронтенде. Иначе код ничего не изменит.

Если нужно скрыть только визуально: CSS без вмешательства в логику

Иногда безопаснее не трогать PHP вообще. Если счётчик нужен для AJAX-обновления, но не должен отображаться на определённых страницах, можно скрыть его CSS-ом. Это не лучший вариант для чистой архитектуры, но он быстро решает задачу и не ломает поведение корзины.

.page-id-123 .cart-count,
.page-id-456 .cart-count {
    display: none;
}

Минус очевиден: элемент остаётся в DOM, а значит, может продолжать участвовать в разметке, если тема рассчитывает ширину хедера по содержимому. Поэтому после скрытия нужно проверить, не поехала ли сетка, не налезли ли кнопки и не изменился ли отступ в мобильной версии.

Сравнение подходов

СпособКогда подходитПлюсыМинусы
Удалить вывод через хукСчётчик добавлен темой или плагиномЧистое решение, не грузит лишний HTMLНужно найти реальный callback
Подменить фрагмент WooCommerceСчётчик обновляется AJAXСохраняет логику корзиныРаботает только при правильном селекторе
Скрыть через CSSНужно быстро убрать отображениеМинимум риска для логикиЭлемент остаётся в DOM

Пошаговое решение без лишних рисков

  1. Откройте страницу, где счётчик нужно убрать, и найдите его селектор в DevTools.
  2. Проверьте, обновляется ли он после добавления товара в корзину.
  3. Найдите в теме или дочерней теме место, где подключается вывод корзины.
  4. Если есть хук — отключите callback условно через remove_action.
  5. Если вывод идёт через AJAX-фрагмент — подмените только нужный фрагмент.
  6. Если нужно быстрое решение — скройте счётчик CSS-ом и проверьте верстку.

Как проверить, что решение сработало

Проверка должна быть не только визуальной. После правки откройте страницу в обычном режиме и в режиме инкогнито, затем выполните три действия: добавьте товар в корзину, обновите страницу и перейдите на другую страницу, где счётчик должен быть скрыт. Если цифра не появляется, а иконка корзины и кнопка перехода в корзину работают как раньше, значит, решение применено корректно.

Дополнительно проверьте консоль браузера на ошибки JavaScript. Если после скрытия или удаления счётчика ломается AJAX-обновление мини-корзины, значит, тема ожидала этот элемент в DOM. В таком случае лучше вернуться к варианту с условным удалением вывода, а не с полным скрытием.

Мини-чек-лист проверки

  • Счётчик исчез только там, где нужно.
  • Мини-корзина открывается без ошибок.
  • AJAX-добавление товара в корзину работает.
  • Шапка не съехала на мобильных устройствах.
  • После очистки кэша изменения сохранились.

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

Скрыли не тот элемент

Часто в шапке есть два похожих счётчика: один для десктопа, другой для мобильного меню. Если скрыть только один селектор, второй останется видимым. Решение — проверить DOM на обеих версиях интерфейса и закрыть все дубли.

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

remove_action не сработает, если его вызывают раньше, чем был добавлен callback. Обычно это происходит, когда код вставляют в неправильный файл или на слишком ранний хук. Безопаснее вешать удаление на wp или after_setup_theme, если вы точно знаете порядок подключения.

Сломали AJAX-фрагменты

Если тема обновляет корзину через woocommerce_add_to_cart_fragments, а вы удалили ожидаемый HTML-элемент, фронтенд может перестать синхронизировать счётчик. В этом случае не удаляйте весь фрагмент, а возвращайте пустую или упрощённую разметку с тем же селектором.

Не учли кэш

На сайтах с кэширующим плагином или серверным кэшем изменения в хедере могут не появиться сразу. После правки очистите кэш страницы, объектный кэш, если он используется, и кэш браузера. Иначе можно ошибочно решить, что код не работает.

Безопасность и производительность

Если правка нужна только для нескольких страниц, не добавляйте тяжёлые условия в каждый рендер хедера. Лучше один раз определить список страниц и работать с ним точечно. Для небольших изменений предпочтительнее дочерняя тема или небольшой mu-plugin, чем правка файлов родительской темы: обновление не затрёт изменения.

Если на проекте уже есть много точечных правок в шапке, имеет смысл вынести их в отдельный файл и документировать, какой элемент и почему отключён. Это экономит время, когда через месяц нужно вернуть счётчик на одну из страниц или проверить конфликт после обновления темы.

Если вам нужно не только убрать счётчик, но и почистить лишние элементы интерфейса в магазине, иногда удобнее сначала навести порядок в шаблонах и скриптах, а уже потом точечно править корзину. В таких задачах полезны инструменты вроде Clearfy Pro, но только если они действительно закрывают ваш сценарий и не добавляют лишнюю абстракцию.

×

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

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

пишет статьи

готовит SEO

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

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