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

Диагностика проблемы с AJAX и кэшированием в WooCommerce

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

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

Пошаговое решение: отключение AJAX для мини-корзины и кнопок «Добавить в корзину»

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

<?php
// Отключаем AJAX для добавления в корзину на страницах магазина
add_filter('woocommerce_product_single_add_to_cart_text', 'disable_ajax_add_to_cart_button');
add_filter('woocommerce_product_add_to_cart_text', 'disable_ajax_add_to_cart_button');

function disable_ajax_add_to_cart_button($text) {
    return $text; // Текст кнопки не меняется, но ниже отключим JS
}

// Отключаем скрипт обновления мини-корзины через AJAX
add_action('wp_enqueue_scripts', 'dequeue_woocommerce_ajax_cart', 99);
function dequeue_woocommerce_ajax_cart() {
    wp_dequeue_script('wc-cart-fragments');
}

Объяснение кода:

  • wp_dequeue_script('wc-cart-fragments') отключает скрипт, который отвечает за AJAX-обновление мини-корзины.

Если вы хотите отключить AJAX для кнопок «Добавить в корзину» на страницах архивов (каталогах), добавьте также:

add_filter('woocommerce_product_add_to_cart_url', function($url, $product) {
    return $product->is_purchasable() && $product->is_in_stock() ? $product->add_to_cart_url() : $url;
}, 10, 2);

Как проверить, что AJAX отключен и проблема решена

  • Обновите страницу магазина и добавьте товар в корзину. Страница должна перезагрузиться, а мини-корзина обновиться без AJAX.
  • В сетевых запросах браузера не должно быть вызовов admin-ajax.php, связанных с корзиной.
  • Проверьте, что проблема с кэшированием исчезла: другие посетители видят актуальные данные корзины.

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

  • Ошибка: Кнопки «Добавить в корзину» не работают после отключения AJAX.
    Причина: Некорректное удаление скриптов или конфликт с темой.
    Решение: Проверьте консоль браузера на ошибки JS, убедитесь, что другой плагин не блокирует стандартный функционал.
  • Ошибка: Мини-корзина не обновляется после добавления товара.
    Причина: Отключен скрипт wc-cart-fragments, но тема использует кастомные AJAX-обработчики.
    Решение: Проверьте тему и плагины на переопределение мини-корзины, внесите корректировки в код.
  • Ошибка: Кэширование страниц все еще мешает отображению актуальной корзины.
    Причина: Не настроено исключение страниц корзины и оформления заказа из кэширования.
    Решение: Добавьте исключения в настройки плагина кэширования (например, WP Rocket, LiteSpeed Cache).

Практические советы по оптимизации и безопасности

  • Если отключение AJAX критично снижает UX, попробуйте настроить методы кэширования с исключением для AJAX-запросов WooCommerce.
  • Для сайтов с большим трафиком рекомендуем использовать Object Cache (Redis, Memcached) для хранения корзины и сессий.
  • Регулярно обновляйте WooCommerce и используемые плагины, чтобы избежать уязвимостей в AJAX-эндпоинтах.
  • Используйте Clearfy Pro для удаления лишних скриптов и оптимизации сайта без ущерба функционалу.

Сравнение подходов: плагин vs код для отключения AJAX в WooCommerce

МетодПреимуществаНедостатки
Отключение через код (functions.php)Легко контролировать, не требует дополнительных плагинов, минимальная нагрузкаТребует базовых знаний PHP, возможны конфликты с темой или плагинами
Использование плагина (например, Disable WooCommerce AJAX Add to Cart)Простая установка, не нужно писать код, часто есть дополнительные настройкиДополнительная нагрузка на сайт, риск конфликтов, зависимость от поддержки плагина
Как создать автоматический импорт продуктов в WooCommerce
10.03.2026
Автоматическое удаление старых записей в WordPress
22.03.2026
Автоматическое удаление забытых корзин в WooCommerce: практическое руководство
09.06.2026
Как вывести и использовать метаданные товара WooCommerce в шаблонах
03.05.2026
Как удалить неиспользуемые метаданные WooCommerce без потери данных
24.06.2026