Как отключить 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
15.04.2026
Оптимизация времени ответа сервера в WordPress: практические решения
18.02.2026
Как удалить или изменить slug постов в WordPress без плагинов
17.12.2025
Как использовать хук WooCommerce before_add_to_cart для дополнительной проверки товара
11.05.2026
Исключение товаров по атрибутам из корзины WooCommerce
18.05.2026