Как отключить AJAX подгрузку в WooCommerce

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

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

Хотя AJAX улучшает UX, он может создавать следующие сложности:

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

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

Как отключить AJAX для кнопки «Добавить в корзину» на страницах архива товаров

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

Отключение AJAX через фильтр в functions.php

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

function wpwp_disable_ajax_add_to_cart( $url, $product ) {
    // Убираем параметр ajax для кнопки добавления в корзину
    if ( strpos( $url, 'add-to-cart=' ) !== false ) {
        $url = remove_query_arg( 'ajax_add_to_cart', $url );
    }
    return $url;
}
add_filter( 'woocommerce_product_add_to_cart_url', 'wpwp_disable_ajax_add_to_cart', 10, 2 );

Этот код убирает AJAX-подгрузку с кнопки, делая её классической ссылкой на добавление товара с перезагрузкой страницы.

Удаление класса AJAX с кнопки

Иногда нужно дополнительно убрать CSS-класс, который отвечает за AJAX:

function wpwp_remove_ajax_class_from_add_to_cart( $classes, $product ) {
    if ( ( $key = array_search( 'ajax_add_to_cart', $classes ) ) !== false ) {
        unset( $classes[ $key ] );
    }
    return $classes;
}
add_filter( 'woocommerce_product_add_to_cart_classes', 'wpwp_remove_ajax_class_from_add_to_cart', 10, 2 );

Отключение AJAX фильтров и пагинации в WooCommerce

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

Отключение скриптов AJAX через wp_dequeue_script

Пример кода для отключения стандартного скрипта WooCommerce, отвечающего за AJAX:

function wpwp_dequeue_woocommerce_ajax() {
    wp_dequeue_script( 'wc-add-to-cart' );
}
add_action( 'wp_enqueue_scripts', 'wpwp_dequeue_woocommerce_ajax', 99 );

Учтите, что это отключит AJAX добавления в корзину полностью, включая страницы товара.

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

Если у вас установлен плагин фильтрации товаров с AJAX, например, Filter Everything, то отключить AJAX можно в настройках плагина. Если такой возможности нет, придется править JS-код плагина или заменять его другим решением.

Практический пример: отключаем AJAX в теме Reboot от WPSHOP

Тема Reboot использует AJAX для динамической загрузки товаров. Чтобы вернуть классическую загрузку страниц, добавьте в functions.php следующее:

function wpwp_reboot_disable_ajax() {
    wp_dequeue_script( 'reboot-ajax-filter' ); // условное имя скрипта
    wp_dequeue_script( 'reboot-ajax-pagination' );
}
add_action( 'wp_enqueue_scripts', 'wpwp_reboot_disable_ajax', 100 );

После этого фильтры и пагинация будут работать без AJAX, с полной перезагрузкой страниц.

Плюсы и минусы отключения AJAX в WooCommerce

Плюсы:

  • Улучшенная совместимость с кастомными решениями и старыми плагинами.
  • Простота отладки и меньше неожиданных ошибок.
  • Лучшее индексирование контента поисковыми системами.

Минусы:

  • Потеря плавного UX без перезагрузки страницы.
  • Более долгие загрузки страниц при каждом взаимодействии.
  • Возможное снижение конверсии из-за задержек.

Альтернативы отключению AJAX: исправление конфликтов и кэширование

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

  • Отключить конфликтующие плагины поочередно и найти виновника.
  • Использовать плагин Clearfy Pro (https://wpshop.ru/clearfy-pro/?utm_source=wpwp.ru&utm_medium=article&utm_campaign=kak-otklyuchit-ajax-podgruzku-v-woocomerce) для оптимизации и исправления конфликтов.
  • Настроить правильное кэширование с исключением AJAX-запросов.

Вывод

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

Как создать автоматический отзыв на посты в WordPress
13.01.2026
Как создать адаптивный блок в WordPress с помощью CSS и PHP
22.02.2026
Как сделать простой REST API для WordPress
26.11.2025
Как изменить URL для страниц автора в WordPress
10.04.2026
Как запретить копирование текста в WordPress
26.01.2026