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

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

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

Для диагностики:

  • Откройте консоль браузера (F12 → Console) и проверьте наличие ошибок JavaScript при добавлении товара в корзину или фильтрации товаров.
  • Проверьте сетевые запросы (вкладка Network) на предмет зависших или ошибочных AJAX-запросов.
  • Отключите поочерёдно плагины, чтобы выявить конфликтующий.
  • Проверьте, не мешают ли кастомные скрипты или темы нормальной работе AJAX.

Пошаговое отключение AJAX для корзины и фильтров

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

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

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

add_filter('woocommerce_add_to_cart_fragments', '__return_empty_array');
remove_action('wp_footer', 'woocommerce_cart_fragments');

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

Отключение AJAX для виджетов фильтрации

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

function disable_woocommerce_layered_nav_ajax() {
    wp_dequeue_script('wc-price-slider');
    wp_dequeue_script('wc-add-to-cart');
    wp_dequeue_script('wc-cart-fragments');
    wp_dequeue_script('woocommerce');
}
add_action('wp_enqueue_scripts', 'disable_woocommerce_layered_nav_ajax', 99);

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

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

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

Частые ошибки и как их исправить

  • Товар не добавляется в корзину: Проверьте, что код добавлен в правильный файл и нет конфликтов с другими функциями, убирающими стандартный функционал.
  • Ошибки в консоли JS после отключения AJAX: Убедитесь, что другие скрипты не зависят от AJAX-функций WooCommerce. Возможно, потребуется адаптировать кастомные скрипты.
  • Кеширование мешает проверке: Отключите кеширование на время тестирования или очистите кеш.

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

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

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

МетодКод/ПлагинПреимуществаНедостатки
Отключение через код (cart fragments и скрипты)PHP-код в functions.phpТочный контроль, нет лишних плагиновТребует технических знаний, возможен конфликт
Отключение через плагин (например, Disable Cart Fragments)Плагин из репозиторияПростота установки, быстрое решениеМеньше контроля, дополнительные плагины увеличивают нагрузку
Как избежать проблем с кешированием в WordPress: практические советы и решения
02.02.2026
WooCommerce: автоматическое изменение стоимости товара в зависимости от роли пользователя
08.06.2026
Как настроить и кастомизировать колонки в админке WordPress
27.03.2026
Как отключить AJAX в WooCommerce без потери функциональности
26.05.2026
WooCommerce: как изменить стоимость товара по времени с помощью WP-Cron
16.06.2026