Как отключить AJAX в WooCommerce: практическое руководство

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

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

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

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

  • Корзина не обновляется автоматически после добавления товара;
  • Фильтры и сортировка товаров не работают;
  • Ошибки JavaScript в консоли браузера, связанные с файлами wc-ajax;
  • Проблемы с кэшированием страниц, когда AJAX-запросы не учитываются;
  • Конфликты с другими плагинами или сторонними скриптами.

Для проверки ошибок откройте консоль браузера (F12 > Console) и посмотрите на наличие красных сообщений. Также можно временно отключить все плагины, кроме WooCommerce, и сменить тему на стандартную (например, Storefront) для выявления источника проблемы.

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

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

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

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

add_filter('woocommerce_add_to_cart_fragments', '__return_empty_array');
remove_action('wp_footer', 'woocommerce_ajax_add_to_cart_js', 99);

Этот код отключит динамическое обновление корзины и скрипт AJAX добавления товара.

Отключение AJAX фильтров и пагинации (если используется AJAX-фильтр)

Если вы используете кастомные AJAX-фильтры, отключите их в настройках плагинов фильтрации или удалите скрипты AJAX через wp_dequeue_script(). Например:

function disable_custom_ajax_scripts() {
    if (is_shop() || is_product_category()) {
        wp_dequeue_script('your-ajax-filter-script');
    }
}
add_action('wp_enqueue_scripts', 'disable_custom_ajax_scripts', 100);

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

По умолчанию мини-корзина WooCommerce обновляется через AJAX. Чтобы отключить, используйте фильтр:

add_filter('woocommerce_cart_fragment_refresh_on_add', '__return_false');

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

После внесения изменений:

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

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

  • Корзина не обновляется после добавления товара: Проверьте, что вы отключили все связанные скрипты AJAX, иначе корзина останется неконсистентной.
  • Фильтры или сортировка перестали работать: Убедитесь, что в теме и плагинах нет жестко прописанных AJAX-запросов. Возможно, понадобится заменить их на стандартные формы с перезагрузкой.
  • Ошибки JavaScript: После удаления скриптов AJAX могут остаться вызовы этих функций в других скриптах. Проверьте консоль и исправьте или отключите конфликтующие скрипты.
  • Кэширование не работает корректно: Отключение AJAX упрощает кэширование, но если кэш настроен неправильно, возможны проблемы с обновлением корзины. Используйте плагины, поддерживающие WooCommerce (например, WP Rocket с настройками для WooCommerce).

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

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

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

МетодЧто отключаетПлюсыМинусы
Удаление скрипта woocommerce_ajax_add_to_cart_jsАвтоматическое добавление в корзину без перезагрузкиПростота, минимальные измененияТолько добавление товара, остальные AJAX остаются
Фильтр woocommerce_add_to_cart_fragmentsОбновление мини-корзины через AJAXОтключает обновление корзины AJAXМини-корзина может не обновляться корректно без перезагрузки
Полное удаление AJAX-фильтров и пагинацииФильтры, сортировка, пагинацияУстраняет конфликты и проблемы с кэшированиемПользовательский опыт ухудшается из-за перезагрузок
Как избежать проблем с отметками продукта в WooCommerce при массовом импорте
28.04.2026
Как использовать WPCommunity для создания форума в WordPress
21.12.2025
Как использовать метод WP_Query для создания сложных запросов в WordPress
01.01.2026
Как создать собственный REST API endpoint в WordPress
15.11.2025
Как создать автоматические отказы по формам в WordPress
04.03.2026

Уроки со скриншотами, подробные руководства