Как отключить AJAX-подгрузку в WooCommerce без плагинов

Диагностика проблемы: зачем отключать AJAX-подгрузку в WooCommerce

AJAX-подгрузка в WooCommerce используется для обновления корзины, фильтров, пагинации и других элементов без перезагрузки страницы. Это повышает UX, но в некоторых случаях вызывает проблемы с производительностью, совместимостью плагинов или кешированием на сервере и CDN. Например, если после обновления WooCommerce перестала корректно работать корзина или не обновляется количество товаров, отключение AJAX помогает выявить источник проблемы.

Как проверить, что AJAX-подгрузка активна и вызывает проблему

  • Откройте консоль браузера (F12) и перейдите на страницу магазина или корзины.
  • Добавьте товар в корзину — если страница не перезагружается, а корзина обновляется через AJAX-запросы (XHR), значит AJAX активен.
  • Обратите внимание на ошибки в консоли или в ответах запросов (статус 500, 400).
  • Отключите кеш на сервере и CDN, чтобы убедиться, что проблема не в них.

Пошаговое решение: отключаем AJAX в WooCommerce через functions.php

WooCommerce не имеет одного универсального фильтра для полного отключения AJAX, поэтому придется отключать отдельные функции, отвечающие за AJAX-подгрузку. Рассмотрим отключение AJAX для корзины и фильтров товаров.

1. Отключение AJAX обновления корзины

add_filter('woocommerce_add_to_cart_fragments', '__return_empty_array', 20);

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

2. Отключение AJAX для фильтров (если используется WooCommerce Layered Nav или подобные)

function disable_woocommerce_ajax_filters() {
    wp_dequeue_script('wc-add-to-cart');
    wp_dequeue_script('wc-cart-fragments');
}
add_action('wp_enqueue_scripts', 'disable_woocommerce_ajax_filters', 99);

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

3. Отключение AJAX пагинации (если используется AJAX пагинация)

Если тема или плагин используют AJAX пагинацию товаров, нужно искать в их скриптах и отключать соответствующие обработчики. Это чаще всего специфично.

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

  • Очистите кеш браузера, сервера и CDN.
  • Перейдите на страницу магазина, добавьте товар в корзину — страница должна перезагрузиться, а корзина обновиться без AJAX.
  • Проверьте консоль браузера — AJAX-запросы к /?wc-ajax=add_to_cart должны отсутствовать.
  • Проверьте работу фильтров и пагинации — они должны работать с полной перезагрузкой страницы.

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

  • Ошибка 500 или 400 при AJAX-запросах: Проверьте логи сервера, отключите сторонние плагины, которые могут конфликтовать с WooCommerce AJAX.
  • Отключение AJAX не сработало: Возможно, тема или плагин используют кастомные скрипты AJAX. Проверьте подключенные JS-файлы и их обработчики.
  • Функции не работают из-за приоритетов: Убедитесь, что хук add_action('wp_enqueue_scripts', ...) с высоким приоритетом (например, 99) срабатывает после загрузки WooCommerce скриптов.

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

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

Сравнение подходов отключения AJAX в WooCommerce

МетодОписаниеПлюсыМинусы
Отключение фильтром woocommerce_add_to_cart_fragmentsЗапрет обновления корзины через AJAXПростая реализация, быстро отключает AJAX корзиныКорзина обновляется с перезагрузкой страницы, UX может ухудшиться
Отключение скриптов WooCommerceПолное отключение AJAX-скриптов WooCommerceПолное решение, снижает нагрузкуМожет нарушить работу других функций WooCommerce
Изменение темы/плагиновОтключение AJAX в кастомных скриптах темыГибкий контроль, сохраняет нужный функционалТребует глубокого анализа и навыков JS
Как удалить неиспользуемые шорткоды в WordPress
15.11.2025
Как исправить ошибку недоступности WooCommerce AJAX корзины после обновления
20.06.2026
Как проверить и исправить ошибку 429 в WooCommerce
19.05.2026
Оптимизация изображений в WordPress с помощью автоматических плагинов
08.11.2025
Как автоматически удалять нерабочие скрипты в WordPress для ускорения сайта
07.03.2026