Как отключить 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 при ошибках
02.04.2026
Как использовать WPRemark для создания оценок и отзывов в WordPress
01.01.2026
Автоматическая регистрация пользователей WordPress с помощью WPCommunity
05.01.2026
Как добавить атрибуты в CSS-классы WordPress без плагинов
03.02.2026
Как автоматически отключать плагины в WordPress при ошибках
06.04.2026