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

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

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

Какие функции WooCommerce используют AJAX

  • Обновление виджета корзины (mini cart)
  • Фильтры товаров (например, с помощью плагинов)
  • Добавление товара в корзину на странице архива или каталога
  • Обновление количества товаров в корзине

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

Для проверки влияния AJAX на производительность:

  • Откройте консоль браузера (F12) и перейдите на вкладку Network.
  • Обновите страницу и посмотрите количество AJAX-запросов (XHR). Если их десятки при простой загрузке, это тревожный знак.
  • Используйте профилировщик, например Query Monitor, чтобы увидеть нагрузку на сервер при AJAX-запросах.
  • Проверьте время отклика сервера на AJAX-запросы — если оно превышает 500 мс, стоит задуматься об оптимизации.

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

1. Отключение AJAX для добавления товара в корзину на странице архива

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

function disable_woocommerce_ajax_add_to_cart() {
    // Отключаем AJAX добавление в корзину на страницах архива
    wp_dequeue_script('wc-add-to-cart');
}
add_action('wp_enqueue_scripts', 'disable_woocommerce_ajax_add_to_cart', 100);

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

Мини-корзина обновляется через AJAX при добавлении товаров. Чтобы отключить это, нужно отменить соответствующие хуки:

remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10);
// Можно заменить на обычную кнопку с перезагрузкой страницы
add_action('woocommerce_after_shop_loop_item', 'custom_add_to_cart_button', 10);

function custom_add_to_cart_button() {
    global $product;
    echo '<a href="' . esc_url($product->add_to_cart_url()) . '" class="button add_to_cart_button">Добавить в корзину</a>';
}

3. Отключение AJAX в виджетах и других местах

Если используете сторонние плагины с AJAX, их нужно настраивать отдельно или отключать скрипты через wp_dequeue_script по аналогии с выше.

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

  • Очистите кэш сайта и браузера.
  • Перейдите на страницу каталога и попробуйте добавить товар в корзину — страница должна перезагружаться и корзина обновляться без AJAX.
  • Откройте консоль разработчика и на вкладке Network проверьте отсутствие XHR запросов при добавлении в корзину.
  • Используйте Query Monitor или аналогичный плагин, чтобы убедиться, что AJAX-запросы больше не выполняются.

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

  • Кнопка «Добавить в корзину» не работает после отключения AJAX. Проверьте, что ссылка ведёт на URL добавления товара с правильными параметрами, а не просто вызывает JS-функцию.
  • Страница не перезагружается при добавлении товара. Возможно, конфликт с кэшированием или плагинами оптимизации. Исключите страницы WooCommerce из кэширования.
  • Мини-корзина не обновляется после добавления товара. Решение — либо отключить мини-корзину, либо использовать стандартное обновление страницы.

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

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

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

ВариантПлюсыМинусыПрименимость
Отключение через wp_dequeue_scriptПростота, быстрое отключение AJAXМожет сломать UX (нет обновлений без перезагрузки)Малые и средние сайты с проблемами производительности
Отключение через хуки и замену кнопокТочный контроль, возможность кастомизацииТребует знаний PHP и WooCommerce APIПродвинутые пользователи и разработчики
Использование плагинов для контроля AJAXУдобство настройки, без кодаЗависимость от стороннего кода, возможные конфликтыДля тех, кто не хочет писать код
Как отключить отзывы на отдельных страницах WordPress
09.04.2026
Исключение товаров по атрибутам из корзины WooCommerce
18.05.2026
Оптимизация времени ответа сервера в WordPress: практические решения
18.02.2026
Как отключить AJAX в WooCommerce для улучшения производительности
24.05.2026
Как исключить товары по атрибутам из корзины WooCommerce
27.04.2026