Как отключить WooCommerce Blocks Cart Fragments и убрать лишние запросы

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

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

Когда cart fragments действительно мешают

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

Что смотреть в браузере и на сервере

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

Полезно также посмотреть:

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

Когда отключать не стоит

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

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

Как отключить WooCommerce Blocks Cart Fragments через код

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

Вариант 1: отключить скрипт на некоммерческих страницах

add_action( 'wp_enqueue_scripts', function () {
	if ( is_admin() ) {
		return;
	}

	// Оставляем fragments только там, где они действительно нужны.
	if ( ! is_cart() && ! is_checkout() && ! is_product() ) {
		wp_dequeue_script( 'wc-cart-fragments' );
		wp_deregister_script( 'wc-cart-fragments' );
	}
}, 20 );

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

Вариант 2: отключить fragments только для гостей

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

add_action( 'wp_enqueue_scripts', function () {
	if ( is_admin() || is_user_logged_in() ) {
		return;
	}

	if ( ! is_cart() && ! is_checkout() ) {
		wp_dequeue_script( 'wc-cart-fragments' );
		wp_deregister_script( 'wc-cart-fragments' );
	}
}, 20 );

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

Вариант 3: убрать автозагрузку fragments из шапки

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

Если вы используете дочернюю тему, проверьте, где именно подключается мини-корзина: в header.php, через хук темы или через блоки WooCommerce. В некоторых случаях проще убрать виджет, чем бороться с последствиями его работы.

Диагностика после правки: как понять, что всё сработало

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

Проверка в браузере

  • Откройте страницу каталога и обновите её с очисткой кэша.
  • В Network проверьте, что запросов к wc-ajax=get_refreshed_fragments больше нет или их стало заметно меньше.
  • Добавьте товар в корзину и убедитесь, что счётчик и мини-корзина ведут себя ожидаемо.
  • Перейдите на страницу корзины и оформления заказа: там функциональность должна сохраняться.

Проверка на сервере

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

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

Отключили скрипт, но мини-корзина всё равно делает запросы

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

Сломался счётчик товаров в шапке

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

После обновления WooCommerce всё вернулось

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

Отключили не тот хук или не тот handle

В WordPress важно совпадение имени скрипта. Если в коде указан неверный handle, dequeue не сработает, а вы будете искать проблему в другом месте. Для WooCommerce обычно используется wc-cart-fragments, но перед внедрением лучше проверить фактическое имя в подключаемых скриптах темы и плагинов.

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

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

  • Храните изменения в дочерней теме или mu-plugin, а не в файлах WooCommerce.
  • После правки очистите кэш страницы и объектный кэш, если он есть.
  • Проверьте мобильную версию отдельно: там мини-корзина часто ведёт себя иначе.
  • Если в теме есть собственный AJAX для корзины, не отключайте WooCommerce fragments вслепую.

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

Что проверить после внедрения на реальном магазине

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

  1. открытие каталога без авторизации;
  2. добавление товара в корзину;
  3. обновление количества в корзине;
  4. переход к оформлению заказа;
  5. работа мини-корзины в шапке, если она осталась.

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

Как программно изменить количество вариантов товара в WooCommerce
26.06.2026
Как отключить XML-RPC в WordPress без плагинов
30.12.2025
Как разрешить доступ к файлам WordPress через .htaccess для конкретных IP
17.04.2026
Как создать дополнительное поле в форме регистрации WordPress без плагинов
17.01.2026
Как сделать отзывы с фотографиями в WordPress
11.04.2026