Почему на разных страницах сайта WooCommerce отображается разное количество товаров в корзине?

Рейтинг: 0Ответов: 1Опубликовано: 04.08.2025

Есть сайт на WordPress + WooCommerce: https://evroflag24.ru/

На нём при добавлении товаров в корзину в шапке отображается количество товаров вот в таком HTML-блоке:

<span class="woodmart-cart-number">0 <span>items</span></span>

Если я нахожусь, например, на странице товара — в кружке отображается одно число (например, 2 товара). Но при переходе на другую страницу (другой товар или в раздел каталога) — число меняется или обнуляется (например, становится 0 или 1), хотя корзина не менялась.

Что пробовал:
Убедился, что проблема не в кэше браузера. Использовал AJAX-запрос через admin-ajax.php для получения количества товаров. Менял WC()->cart->get_cart_contents_count() и count(WC()->cart->get_cart()).

Всё равно на разных страницах значение может отличаться.

Мои предположения: Возможно, на каких-то страницах WooCommerce не инициализирует корзину полностью.

Или какой-то плагин/тема (Woodmart) выводит кешированное значение.

Или корзина WooCommerce хранится в сессии, которая по каким-то причинам сбрасывается/разделяется.

Вопрос: Как корректно получить актуальное количество позиций в корзине на любой странице сайта, чтобы отображалось одно и то же число при переходах по сайту?

Заранее благодарю за помощь!

Ответы

▲ 1

Раньше в мини-корзине иногда показывался «0», даже если в корзине были товары — из-за кэша и того, что данные не обновлялись. Я добавил скрипт, который через AJAX показывает именно количество разных товаров в корзине и обновляет число при переходах по сайту. Чтобы кэш не мешал работе корзины, в WP Rocket добавлены исключения по cookies woocommerce_items_in_cart и woocommerce_cart_hash. Теперь количество товаров отображается правильно. Я проверил — всё работает