Как отключить WooCommerce Cart Fragments на страницах без корзины

Если на сайте WooCommerce мини-корзина есть только в шапке, а обновление корзины через AJAX грузится на каждой странице, это часто лишняя нагрузка. Проблема обычно проявляется не как явная ошибка, а как лишние запросы к ?wc-ajax=get_refreshed_fragments, задержки в консоли и тяжелая загрузка страниц, где корзина вообще не используется.

Ниже разберем, когда отключение cart fragments действительно уместно, как сделать это без поломки мини-корзины и как проверить результат после внедрения.

Когда cart fragments мешают, а когда их трогать не стоит

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

Отключать fragments имеет смысл, если:

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

Не стоит отключать fragments «вслепую», если у вас тема сильно завязана на динамическую шапку. В таком случае сначала проверьте, где именно используется мини-корзина и какие элементы зависят от AJAX-обновления.

Диагностика проблемы: как понять, что запросы лишние

Самый простой способ — открыть DevTools в браузере и посмотреть вкладку Network. На страницах, где нет корзины, вы можете увидеть запросы к WooCommerce fragments сразу после загрузки. Если они повторяются при каждом переходе между страницами, это уже повод проверить настройку.

Дополнительно полезно посмотреть:

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

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

Пошаговое решение: отключить загрузку cart fragments на ненужных страницах

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

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

Добавьте код в дочернюю тему или в собственный плагин. Так проще контролировать поведение и не потерять правки при обновлении темы.

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

	// Не отключаем на страницах корзины и оформления заказа.
	if ( function_exists( 'is_cart' ) && is_cart() ) {
		return $data;
	}

	if ( function_exists( 'is_checkout' ) && is_checkout() ) {
		return $data;
	}

	// Если в теме есть мини-корзина на всех страницах, этот код нужно доработать.
	return null;
}, 10, 2 );

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

Если нужно убрать сам скрипт с части страниц

Когда вы точно знаете, что мини-корзина не используется вне магазина, можно снять скрипт через wp_dequeue_script. Делать это стоит аккуратно: сначала проверьте, не зависит ли от него тема или сторонний плагин.

add_action( 'wp_enqueue_scripts', function() {
	if ( is_cart() || is_checkout() ) {
		return;
	}

	wp_dequeue_script( 'wc-cart-fragments' );
	wp_deregister_script( 'wc-cart-fragments' );
}, 100 );

Этот способ жестче. Он подходит для сайтов, где вы контролируете шаблоны и точно знаете, что динамическая мини-корзина не нужна на обычных страницах.

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

ПодходЧто делаетПлюсыМинусы
Фильтр woocommerce_get_script_dataОтключает инициализацию fragmentsМягче, меньше риск поломкиНе всегда убирает сам файл из загрузки
wp_dequeue_scriptСнимает скрипт с очередиБолее заметное снижение лишней активностиМожно сломать тему или мини-корзину
Ничего не менятьОставить стандартное поведениеМинимум рискаЛишние запросы и нагрузка остаются

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

После добавления кода проверьте не только отсутствие ошибок в консоли, но и реальное поведение корзины.

  1. Откройте главную, каталог и запись блога в режиме инкогнито.
  2. Посмотрите Network: запрос к get_refreshed_fragments не должен появляться на страницах, где он отключен.
  3. Добавьте товар в корзину и убедитесь, что счетчик и мини-корзина обновляются там, где это предусмотрено.
  4. Проверьте страницу корзины и оформления заказа отдельно: там функциональность должна остаться рабочей.
  5. Если используется кэш, очистите его и повторите тест без авторизации.

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

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

Отключили fragments глобально и сломали мини-корзину

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

Сняли скрипт, но забыли про кэш темы или плагина

После правки код может не сработать из-за кэширования статических файлов или HTML. Очистите кэш плагина, сервера и CDN, затем проверьте сайт в приватном окне.

Добавили код в родительскую тему

После обновления темы правка исчезнет. Для таких изменений лучше использовать дочернюю тему или небольшой mu-plugin.

Не проверили сторонние плагины

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

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

Любые изменения в загрузке скриптов лучше делать точечно. Не удаляйте WooCommerce-скрипты «на глаз» по списку из интернета: сначала проверьте, какой именно handle используется в вашей версии и теме.

Если сайт большой, удобнее держать такие правки в отдельном мини-плагине. Тогда код проще отключить, перенести или протестировать на staging. Для проектов, где часто приходится чистить лишнюю нагрузку и дубли, полезно держать под рукой инструменты вроде Clearfy Pro, но даже с плагинами лучше понимать, что именно отключается и на каких страницах.

И еще один практический момент: если вы отключаете fragments ради ускорения, не забудьте проверить не только фронтенд, но и сценарий добавления товара в корзину с мобильных устройств. Именно там чаще всего всплывают скрытые зависимости темы от AJAX-обновления.

Как удалить неиспользуемые атрибуты продуктов WooCommerce через код
13.07.2026
Как удалить привязку к аккаунту WordPress через базу данных
09.01.2026
Как избежать ошибок при удалённом внешнем вызове в WordPress
30.05.2026
Как избежать ошибки 429 в WordPress при частых AJAX-запросах
02.03.2026
Как использовать WPRemark для оценки и улучшения контента в WordPress
15.04.2026