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

Почему иногда нужно отключить AJAX в WooCommerce

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

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

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

Основные функции AJAX в WooCommerce и что отключать

WooCommerce использует AJAX в нескольких местах:

  • Обновление корзины в мини-корзине (header cart fragment)
  • Добавление товаров в корзину без перезагрузки страницы
  • Фильтрация товаров на странице каталога
  • Обновление количества товаров в корзине

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

Чаще всего в целях оптимизации отключают обновление мини-корзины через AJAX (cart fragments), так как этот процесс генерирует множество запросов при загрузке страниц.

Отключение cart fragments — что это даёт

Cart fragments — это механизм WooCommerce, который динамически обновляет содержимое мини-корзины в шапке сайта с помощью AJAX. Он очень полезен, но генерирует дополнительную нагрузку на сервер и увеличивает время загрузки.

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

Как отключить AJAX cart fragments в WooCommerce — пример кода

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

function wpfaq_disable_woocommerce_cart_fragments() {
    if ( function_exists('is_woocommerce') ) {
        wp_dequeue_script('wc-cart-fragments');
    }
}
add_action('wp_enqueue_scripts', 'wpfaq_disable_woocommerce_cart_fragments', 11);

Этот код удаляет скрипт wc-cart-fragments, который отвечает за AJAX обновление корзины. После добавления кода мини-корзина перестанет обновляться динамически — изменения будут видны только после перезагрузки страницы.

Дополнительные рекомендации по коду

Если у вас кастомная тема или плагин, который сильно зависит от AJAX обновления корзины, проверьте, не ломается ли функционал после отключения wc-cart-fragments. При необходимости доработайте логику, чтобы избежать ошибок.

Так же можно реализовать альтернативные решения, например, обновление корзины через вызов перезагрузки части страницы или использовать другие технологии, менее нагружающие сервер.

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

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

Для этого достаточно удалить соответствующий скрипт WooCommerce, который отвечает за AJAX добавление в корзину:

function wpfaq_disable_ajax_add_to_cart() {
    wp_dequeue_script('wc-add-to-cart');
}
add_action('wp_enqueue_scripts', 'wpfaq_disable_ajax_add_to_cart', 20);

После этого кнопки «Добавить в корзину» на странице каталога будут работать как обычные ссылки с перезагрузкой страницы.

Что стоит учесть

Отключение AJAX добавления товаров уменьшит интерактивность, но повысит стабильность и совместимость с другими плагинами или кастомными скриптами. Этот метод подходит для сайтов с небольшим ассортиментом или для упрощённых версий магазина.

Отключение AJAX фильтров в WooCommerce

Если вы используете AJAX фильтры для товаров, например с помощью плагинов типа FacetWP или JetSmartFilters, то иногда возникает необходимость временно отключить AJAX, чтобы устранить конфликты или ускорить работу.

Отключить AJAX фильтры можно через настройки плагина. Если фильтры реализованы кастомно, то нужно отключить скрипты, которые делают AJAX-запросы, и заменить их на обычные GET-запросы с перезагрузкой страницы.

Пример отключения AJAX фильтрации с помощью JavaScript:

jQuery(document).ready(function($) {
    // Отключаем AJAX обработчик фильтров
    $('.filter-form').off('submit');
    // Форма фильтров теперь отправляется обычным образом
});

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

Итог: что даст отключение AJAX и как компенсировать недостатки

Отключение AJAX в WooCommerce может значительно снизить нагрузку на сервер и повысить скорость сайта, особенно на больших магазинах или слабом хостинге.

Однако важно понимать, что это ухудшит пользовательский опыт за счёт перезагрузки страниц. Чтобы минимизировать неудобства, можно использовать следующие подходы:

  • Отключать только отдельные AJAX-функции, такие как cart fragments или AJAX добавление в корзину
  • Добавлять кеширование для снижения нагрузки
  • Использовать альтернативные способы обновления данных, например через PJAX или частичные перезагрузки
  • Тестировать сайт после отключения AJAX, чтобы избежать поломок

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

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

Как добавить автоматическое сообщение при регистрации в WordPress
03.04.2026
WooCommerce: как использовать хуки для автоматизации изменений статуса заказа
03.07.2026
Как добавить владельца (автора) постов в WordPress и управлять им программно
20.02.2026
Как добавить дополнительное поле в форму регистрации WordPress с примером кода
30.12.2025
Как использовать REST API для управления пользователями в WordPress
21.03.2026