Как отключить wc-ajax=get_refreshed_fragments в WooCommerce без поломки мини-корзины

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

Важно не путать задачу с полным отключением AJAX в WooCommerce. Здесь речь именно о cart fragments и связанном с ними запросе, а не о checkout, фильтрах товаров или добавлении в корзину. Если отключить всё подряд, можно сломать интерфейс магазина.

Когда отключение действительно оправдано

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

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

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

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

Дополнительно проверьте:

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

Какие есть варианты решения

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

ПодходКогда подходитКомпромисс
Отключить скрипт fragmentsМини-корзина не нужнаСчетчик корзины не обновляется без перезагрузки
Отключить только AJAX-запросНужно сохранить часть логики темыЗависит от того, как тема использует fragments
Оставить и оптимизировать кешМини-корзина нужнаЗапрос останется, но его влияние можно уменьшить

Пошаговое решение через functions.php или мини-плагин

Самый безопасный путь — вынести код в мини-плагин или в functions.php дочерней темы. Так вы не потеряете изменения при обновлении темы. Если код нужен только для одного проекта, мини-плагин даже удобнее: его проще отключить для проверки.

1. Отключаем загрузку cart fragments на фронтенде

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

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

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

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

2. Убираем сам AJAX-запрос через фильтр

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

add_filter( 'woocommerce_cart_fragments_enabled', '__return_false' );

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

3. Отключаем только на страницах, где корзина не нужна

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

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

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

Такой вариант полезен, если магазин живёт не только на страницах WooCommerce, а весь сайт собран как смесь каталога, контента и посадочных страниц.

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

После изменений не ограничивайтесь визуальной проверкой шапки. Откройте Network и убедитесь, что запрос wc-ajax=get_refreshed_fragments больше не уходит на страницах, где вы его отключали. Затем добавьте товар в корзину и проверьте, как ведёт себя счетчик, мини-корзина и переход в checkout.

Полезно пройти короткий чек-лист:

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

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

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

Сняли скрипт, но мини-корзина осталась стандартной

Это типичная ситуация, когда тема использует стандартный WooCommerce widget cart. В таком случае либо заменяйте виджет на статичный блок, либо не отключайте fragments полностью. Иначе пользователь увидит устаревшее количество товаров до перезагрузки страницы.

Отключили fragments, а счетчик корзины перестал обновляться

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

Кеш начал показывать разное состояние корзины

Если на сайте агрессивный page cache, а корзина выводится в шапке, отключение fragments может сделать проблему заметнее. Тогда нужно либо исключить шапку из кеширования, либо использовать отдельный динамический блок для корзины. Иначе пользователь будет видеть старое состояние до следующей полной загрузки страницы.

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

Проверьте, не подключает ли fragments сторонний плагин, связанный с мини-корзиной, быстрым просмотром или AJAX-добавлением в корзину. В таком случае одного wp_dequeue_script() может быть недостаточно: плагин может повторно регистрировать скрипт на более позднем хукe.

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

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

Если цель — ускорение, не ограничивайтесь одним запросом. Часто больший эффект дают:

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

Если вы используете Clearfy Pro, имеет смысл сначала посмотреть, какие скрипты и элементы WooCommerce реально нужны на сайте, а какие можно убрать без потери функциональности: https://wpshop.ru/plugins/clearfy.

Когда лучше не отключать этот механизм

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

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как изменить авторские права в футере WordPress: практическое руководство с примерами
03.10.2026
Как удалить старые или неиспользуемые мета данные в WordPress: практическое руководство
24.08.2026
Как правильно кэшировать данные в WordPress для ускорения сайта
02.10.2026
Как отключить архивы дат в WordPress без потери индексации записей
05.09.2026
Как исправить дублирование артикулов (SKU) в WooCommerce: пошаговое решение
20.09.2026
×
Прокачай свой сайт WordPress!

WordPress

-20% на премиум темы и плагины

Создай сайт своей мечты ⋙