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

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

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

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

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

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

Как отключить AJAX добавление в корзину в WooCommerce

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

add_filter('woocommerce_add_to_cart_fragments', '__return_empty_array');

add_action('wp_enqueue_scripts', function() {
    if (function_exists('is_product') && !is_product()) {
        wp_dequeue_script('wc-add-to-cart');
    }
}, 99);

Объяснение:

  • woocommerce_add_to_cart_fragments — фильтр, который отвечает за обновление элементов корзины через AJAX. Возвращая пустой массив, мы отключаем обновления.
  • wp_dequeue_script('wc-add-to-cart') — отключает скрипт, отвечающий за AJAX добавление в корзину на страницах, кроме страниц отдельных товаров.

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

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

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

add_filter('woocommerce_cart_item_thumbnail', function($image, $cart_item, $cart_item_key) {
    remove_action('wp_footer', 'woocommerce_cart_fragments', 20);
    return $image;
}, 10, 3);

Однако этот способ не самый оптимальный, так как может вызвать проблемы с мини-корзиной. Лучше полностью отключить скрипты AJAX обновления мини-корзины:

add_action('wp_enqueue_scripts', function() {
    wp_dequeue_script('wc-cart-fragments');
}, 99);

Это отключит AJAX обновление мини-корзины и уберёт лишние запросы при загрузке страниц.

Влияние отключения AJAX на UX и SEO

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

С точки зрения SEO, отключение AJAX не повредит, а в некоторых случаях даже улучшит индексацию, так как контент становится доступен без дополнительных скриптов.

Практические советы по оптимизации WooCommerce с отключённым AJAX

  • Используйте качественное кеширование страниц (например, с помощью плагинов Clearfy Pro или других решений).
  • Обязательно тестируйте работу корзины и оформления заказа после отключения AJAX, чтобы убедиться, что все работает корректно.
  • Если у вас установлен плагин WPRemark, он может помочь в организации отзывов без AJAX, что снизит нагрузку.
  • Оптимизируйте изображения и используйте CDN для ускорения загрузки страниц.

Дополнительные методы контроля AJAX в WooCommerce

Если вам нужно selectively отключить AJAX на отдельных страницах или для определённых действий, можно использовать условные конструкции:

add_action('wp_enqueue_scripts', function() {
    if (is_shop() || is_product_category()) {
        wp_dequeue_script('wc-add-to-cart');
        wp_dequeue_script('wc-cart-fragments');
    }
}, 99);

Это позволит отключить AJAX только на страницах магазина и категорий, оставив его активным на страницах товаров.

Выводы

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

Для упрощения работы рекомендуем использовать проверенные решения и плагины из WPShop, которые помогут вам добиться оптимальной производительности и функциональности.

Как использовать хуки WooCommerce для кастомизации функциональности
17.03.2026
Как удалить все посты по автору в WordPress: практическое руководство
13.11.2025
Как создать динамические таблицы в WordPress с помощью AJAX
07.04.2026
Как создать динамические таблицы в WordPress с помощью шорткода
11.01.2026
Как создать пошаговую многошаговую форму в WordPress без плагинов
27.02.2026