Как отключить AJAX в WooCommerce для ускорения сайта

Почему стоит отключить AJAX в WooCommerce

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

Отключение AJAX поможет уменьшить количество запросов к серверу, снизить использование ресурсов и ускорить загрузку страниц, если интерактивность не критична для вашего магазина.

Диагностика: как понять, что AJAX тормозит сайт

  • Откройте DevTools в браузере (F12) и перейдите на вкладку Network.
  • Перезагрузите страницу каталога или корзины WooCommerce.
  • Обратите внимание на количество AJAX-запросов (XHR) и время их обработки.
  • Если много AJAX-запросов, и они занимают значительное время, это повод для оптимизации.
  • Проверьте нагрузку на сервер во время взаимодействия с сайтом (например, через панель хостинга или инструменты мониторинга сервера).

Пошаговое отключение AJAX в WooCommerce

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

По умолчанию WooCommerce обновляет корзину через AJAX при изменении количества товаров. Чтобы отключить это, добавьте следующий код в functions.php вашей темы или в плагин для кастомного кода:

add_filter('woocommerce_cart_item_quantity', 'disable_ajax_cart_quantity', 10, 3);
function disable_ajax_cart_quantity($product_quantity, $cart_item_key, $cart_item) {
    // Возвращаем стандартный input без AJAX
    return str_replace('class="qty ajax_quantity"', 'class="qty"', $product_quantity);
}

Этот код убирает класс, по которому WooCommerce активирует AJAX-обновление количества товара.

Отключение AJAX фильтров и пагинации

Если у вас установлены фильтры или пагинация с AJAX (например, через темы или плагины), их можно отключить настройками плагина или добавить JavaScript для загрузки страниц без AJAX. Часто это делается путем удаления соответствующих скриптов.

Для стандартного WooCommerce можно убрать поддержку AJAX для фильтрации таким образом:

add_filter('woocommerce_layered_nav_link', 'disable_ajax_layered_nav_link', 10, 2);
function disable_ajax_layered_nav_link($link, $term) {
    // Убираем обработчик AJAX, чтобы переход был обычным
    return preg_replace('/onclick="[^\"]+"/', '', $link);
}

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

  • Загрузите страницу каталога и корзины, убедитесь, что изменения количества товара приводят к полной перезагрузке страницы, а не к AJAX-запросу.
  • Проверьте в DevTools вкладку Network, что нет XHR-запросов при изменении количества или фильтрации.
  • Оцените скорость загрузки страниц «до» и «после» с помощью Google PageSpeed Insights или других инструментов.
  • Проверьте работу всех функций магазина: добавление товаров в корзину, изменение количества, фильтрация, пагинация — чтобы не было сбоев.

Частые ошибки при отключении AJAX в WooCommerce и как их исправить

  • Ошибка: При отключении AJAX корзина перестала обновляться корректно.
    Причина: Некоторые темы или плагины требуют AJAX для нормальной работы. Отключение без адаптации кода приводит к ошибкам.
    Решение: Проверьте консоль браузера на ошибки JavaScript, при необходимости доработайте шаблоны корзины.
  • Ошибка: После отключения AJAX фильтров страница не обновляется или фильтрация не работает.
    Причина: Плагины фильтров ожидают AJAX.
    Решение: В настройках плагина отключите AJAX, либо замените плагин на более простой.
  • Ошибка: Некорректное отображение количества товаров после отключения AJAX.
    Причина: Кэширование страниц или скриптов.
    Решение: Очистите кэш браузера и сервера, отключите плагин кеширования и проверьте повторно.

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

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

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

МетодПлюсыМинусыКомпромисс
Отключение через код (functions.php)Полный контроль, бесплатноТребует навыков, может сломать функционалТестировать на тестовом сайте
Отключение через настройки плагинов фильтров и темПросто, без кодаНе всегда доступно, зависит от реализацииИспользовать совместимые плагины
Использование плагинов оптимизации, блокирующих AJAXАвтоматизация, дополнительные функцииДополнительная нагрузка, возможно несовместимостьВыбирать проверенные решения, например Clearfy Pro от WPShop
Как установить ограничение на число категорий в WordPress
18.02.2026
Как автоматически изменять заголовок постов в WordPress
08.03.2026
Автоматическое отключение комментариев на старых публикациях WordPress
14.02.2026
Как удалить пустые категории в WordPress
24.03.2026
Как избежать проблем при использовании AJAX в WordPress
10.04.2026