WooCommerce: как отключить AJAX подгрузку корзины для улучшения производительности

Проблема: замедление сайта из-за AJAX подгрузки корзины в WooCommerce

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

Как диагностировать проблему с cart fragments

  • Откройте сайт в браузере и запустите DevTools (F12).
  • Перейдите на вкладку Network (Сеть) и обновите страницу.
  • Найдите запросы к /?wc-ajax=get_refreshed_fragments.
  • Если такие запросы есть и занимают значительное время, значит AJAX подгрузка корзины активна.

Также можно заметить увеличение использования CPU и задержки при загрузке страниц.

Пошаговое решение: отключение AJAX подгрузки корзины

Для отключения AJAX подгрузки корзины в WooCommerce достаточно удалить действие, которое добавляет скрипт cart fragments и очистить связанные стили и скрипты.

add_action('wp_enqueue_scripts', function() {
    wp_dequeue_script('wc-cart-fragments');
    wp_deregister_script('wc-cart-fragments');
}, 11);

Добавьте этот код в файл functions.php вашей темы или в кастомный плагин.

Объяснение кода

  • wp_dequeue_script отключает загрузку скрипта cart fragments.
  • wp_deregister_script удаляет регистрацию скрипта, чтобы избежать повторной загрузки.
  • Хук wp_enqueue_scripts с приоритетом 11 позволяет выполнить код после того, как WooCommerce добавляет свои скрипты.

Дополнительный вариант: убрать AJAX только на определённых страницах

add_action('wp_enqueue_scripts', function() {
    if (is_front_page() || is_home()) {
        wp_dequeue_script('wc-cart-fragments');
        wp_deregister_script('wc-cart-fragments');
    }
}, 11);

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

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

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

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

  • Код не работает из-за неправильного приоритета хука: убедитесь, что приоритет хука в add_action('wp_enqueue_scripts', ...) больше 10, например, 11, иначе скрипт не будет отключен.
  • Обновление корзины не происходит как ожидалось: после отключения cart fragments обновление корзины не будет динамическим. Нужно информировать пользователей, что корзина обновляется при перезагрузке страницы.
  • Кэширование мешает проверке: отключите кэш браузера и серверные кэши перед тестированием.
  • Проблемы с совместимостью плагинов: некоторые плагины могут зависеть от AJAX подгрузки корзины. Проверьте функциональность сайта после отключения.

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

  • Отключайте cart fragments на страницах, где динамическое обновление корзины не критично (например, главная, блог).
  • Используйте кэширование страниц вместе с отключением AJAX подгрузки для максимальной производительности.
  • Проверяйте совместимость с кеширующими плагинами (WP Rocket, W3 Total Cache) — отключение cart fragments улучшает их работу.
  • Избегайте отключения cart fragments на страницах оформления заказа и корзины, чтобы не сломать UX.

Сравнение способов отключения AJAX подгрузки корзины

СпособПлюсыМинусы
Отключение через wp_dequeue_scriptПростота, без дополнительных плагиновПолная потеря динамического обновления корзины
Отключение через плагин (например, Disable Cart Fragments)Удобство, настройки через админкуДополнительный плагин, возможные конфликты
Оставить как естьПолная функциональность AJAXДополнительные запросы, нагрузка на сервер
Как создать собственный REST API endpoint в WordPress
22.11.2025
Удаление неиспользуемых атрибутов и метаданных в WooCommerce: практическое руководство
28.04.2026
WooCommerce: как реализовать авторизацию пользователя по ссылке без пароля
11.07.2026
Как удалить мета-тег generator из WordPress
10.12.2025
Как создать автоподпись в WordPress с помощью хуков
29.12.2025