Как отключить AJAX в WooCommerce для разных страниц сайта

Диагностика проблемы: зачем и когда отключать AJAX в WooCommerce

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

Как понять, что AJAX вызывает проблему?

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

Пошаговое решение: отключение AJAX WooCommerce на отдельных страницах

WooCommerce AJAX обычно задействован в следующих функциях:

  • Обновление корзины в шапке
  • Фильтры товаров
  • Добавление товара в корзину без перезагрузки
  • Обновление мини-корзины (widget)

Для отключения AJAX на странице можно использовать фильтры и условные теги WordPress.

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

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

add_filter('woocommerce_is_ajax_add_to_cart_enabled', function($enabled) {
    if (is_product()) { // отключаем AJAX на странице товара
        return false;
    }
    return $enabled;
});

Отключение AJAX обновления мини-корзины на страницах, кроме магазина

add_filter('woocommerce_widget_cart_is_hidden', function($hidden) {
    if (!is_shop() && !is_product_category() && !is_product_tag()) {
        // Скрываем мини-корзину с AJAX на всех страницах, кроме каталога
        return true;
    }
    return $hidden;
});

Отключение AJAX фильтров товаров на страницах архива

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

function disable_ajax_filters_on_pages() {
    if (is_page('blog') || is_page('checkout')) {
        wp_dequeue_script('your-ajax-filter-script-handle');
    }
}
add_action('wp_enqueue_scripts', 'disable_ajax_filters_on_pages', 20);

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

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

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

  • Неправильный хук для отключения скриптов: используйте wp_enqueue_scripts с приоритетом не менее 20, чтобы ваши изменения применились после основного подключения скриптов.
  • Ошибка в условных тегах: убедитесь, что используете правильные функции, например is_product(), is_shop(), is_page(). Для нестандартных страниц может потребоваться дополнительная проверка.
  • Отключение AJAX влияет на UX: внимательно тестируйте, чтобы не ухудшить пользовательский опыт, особенно на страницах магазина.
  • Конфликты с другими плагинами: если AJAX не отключается, проверьте, нет ли плагинов, которые повторно подключают скрипты или используют свои хуки.

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

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

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

МетодГде отключаетПреимуществаНедостатки
Фильтр woocommerce_is_ajax_add_to_cart_enabledСтраница товараПростое и быстрое отключение AJAX добавления товараНе отключает AJAX на других страницах
Фильтр woocommerce_widget_cart_is_hiddenМини-корзина вне магазинаОтключает обновление мини-корзины AJAXМини-корзина скрывается, UX ухудшается
Отключение скриптов через wp_dequeue_scriptЛюбые страницы, по условиюГибкий контроль над скриптами AJAXТребует знать точные хендлы скриптов
Как создать динамическую функцию фильтра по мета полям в WordPress
06.03.2026
Как использовать WP-Cron для автоматизации задач в WordPress
14.01.2026
Как создать собственный виджет WordPress с примерами кода
26.11.2025
Как создать динамические формы в WordPress с помощью AJAX
23.11.2025
Как отключить комментарии на отдельных страницах WordPress
10.04.2026