Как отключить WooCommerce Cart Fragments для ускорения сайта

Если в WooCommerce сайт долго грузит главную, каталог или карточку товара, а в запросах постоянно всплывает wc-ajax=get_refreshed_fragments, проблема часто не в теме и не в «тяжёлом хостинге», а в механизме Cart Fragments. Он нужен для синхронизации мини-корзины, но на части проектов создаёт лишние AJAX-запросы на каждой странице.

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

Когда Cart Fragments действительно мешает

Cart Fragments — это скрипт WooCommerce, который обновляет фрагменты корзины через AJAX. На практике он начинает раздражать в трёх сценариях:

  • на сайте много трафика на страницах, где корзина вообще не нужна;
  • в шапке нет мини-корзины, но скрипт всё равно грузится;
  • плагин кэширования не может нормально работать из-за постоянных AJAX-вызовов.

Если открыть DevTools → Network и обновить страницу, можно увидеть запрос к ?wc-ajax=get_refreshed_fragments. Если он есть на каждой странице, а мини-корзина не используется, это хороший кандидат на отключение.

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

Перед изменениями проверьте три вещи:

  1. Есть ли в теме элемент мини-корзины или счётчик товаров в шапке.
  2. Используется ли виджет WooCommerce Cart в сайдбаре или футере.
  3. Есть ли сторонний плагин, который завязан на обновление корзины без перезагрузки страницы.

Если хотя бы один из этих пунктов актуален, отключать Cart Fragments нужно аккуратно, с тестом на фронтенде.

Как отключить Cart Fragments без поломки корзины

Самый надёжный способ — убрать загрузку скрипта только там, где он не нужен. Для этого можно использовать фильтр woocommerce_get_script_data. Он позволяет отключить данные для скрипта wc-cart-fragments, не трогая сам WooCommerce.

Вариант через functions.php или мини-плагин

add_filter( 'woocommerce_get_script_data', function( $params, $handle ) {
	if ( 'wc-cart-fragments' === $handle ) {
		return null;
	}

	return $params;
}, 10, 2 );

Этот вариант подходит, если вам не нужна динамическая мини-корзина на всех страницах. Но если корзина в шапке есть, лучше ограничить отключение только страницами, где она не используется.

Отключение только на не-woocommerce страницах

add_action( 'wp_enqueue_scripts', function() {
	if ( function_exists( 'is_woocommerce' ) && ! is_woocommerce() && ! is_cart() && ! is_checkout() ) {
		wp_dequeue_script( 'wc-cart-fragments' );
		wp_deregister_script( 'wc-cart-fragments' );
	}
}, 100 );

Этот способ проще, но у него есть компромисс: если у вас мини-корзина показывается, например, в блоге или на главной, она перестанет обновляться без перезагрузки страницы.

Что выбрать: код, плагин или компромисс

ПодходКогда подходитМинус
Код через фильтрЕсли нужна точечная настройка и контрольНужно тестировать тему и шапку
Отключение через dequeueЕсли Cart Fragments не нужен вне магазинаМожет сломать динамическую мини-корзину
Плагин оптимизацииЕсли уже используете комплексную чистку фронтендаЛегко получить конфликт настроек

Если у вас уже стоит плагин оптимизации, например Clearfy Pro, проверьте, нет ли там отдельной опции для отключения Cart Fragments или оптимизации WooCommerce-скриптов. Но даже в этом случае лучше понимать, что именно выключается, а не полагаться на «ускорение в один клик».

Пошаговая проверка после внедрения

После правки не ограничивайтесь открытием главной страницы. Проверка должна быть практической:

  • откройте главную, каталог, карточку товара и страницу блога;
  • посмотрите Network в DevTools и убедитесь, что запрос wc-ajax=get_refreshed_fragments исчез там, где он не нужен;
  • добавьте товар в корзину и проверьте, обновляется ли счётчик, если он у вас есть;
  • очистите кэш плагина и серверный кэш, если они используются;
  • проверьте мобильную версию отдельно, потому что шапка и мини-корзина там часто ведут себя иначе.

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

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

Скрипт отключили, но запросы остались

Обычно это означает, что Cart Fragments грузит не WooCommerce, а тема или сторонний плагин. Проверьте исходный код страницы и список подключённых скриптов через Query Monitor или DevTools. Иногда дублирующий запрос создаёт кастомная мини-корзина.

Мини-корзина перестала обновляться

Значит, вы отключили wc-cart-fragments там, где он был нужен. Верните скрипт и ограничьте отключение только страницами без корзины, либо оставьте его на страницах магазина и оформления заказа.

Кэш стал работать хуже, а не лучше

Так бывает, если на странице остались другие динамические блоки: попапы, счётчики, AJAX-фильтры. Cart Fragments — не единственный источник проблем. В таком случае нужно смотреть весь фронтенд, а не только WooCommerce.

Изменения внесли в тему и потеряли после обновления

Не правьте functions.php родительской темы. Используйте дочернюю тему или небольшой mu-plugin. Это особенно важно на магазинах, где обновления темы и WooCommerce идут регулярно.

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

Если отключаете Cart Fragments ради ускорения, не делайте это вслепую. Сначала измерьте базовую нагрузку: время ответа страницы, число запросов, наличие AJAX-вызова корзины. После правки сравните только те же страницы и только в тех же условиях.

Для магазинов с высокой нагрузкой полезно дополнительно:

  • убрать лишние скрипты WooCommerce на страницах, где магазин не используется;
  • проверить, не дублируется ли мини-корзина в теме и плагине;
  • очистить автозагрузку опций, если проект давно живёт и база разрослась;
  • не смешивать несколько плагинов, которые одновременно оптимизируют JS WooCommerce.

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

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

Результат считается нормальным, если выполняются все пункты:

  • на страницах без корзины запрос get_refreshed_fragments больше не появляется;
  • мини-корзина и счётчик товаров работают на тех страницах, где вы их оставили;
  • страницы магазина и карточки товара открываются без ошибок JavaScript;
  • кэширование не конфликтует с WooCommerce-страницами;
  • после очистки кэша поведение не меняется.

Если всё это выполнено, Cart Fragments можно считать отключённым безопасно, а не просто «вырубленным ради галочки».

Исключение определённых товаров из поиска WooCommerce: практическое руководство
17.06.2026
Как использовать хук WooCommerce before_add_to_cart для дополнительной проверки товара
09.07.2026
Массовое обновление атрибутов товаров в WooCommerce: практическое руководство
28.05.2026
Автоматическое изменение стоимости товара в WooCommerce по условиям
03.07.2026
Как оптимизировать загрузку шаблонов WordPress для ускорения сайта
10.01.2026