WooCommerce по умолчанию использует AJAX для обновления корзины и некоторых элементов страницы без перезагрузки. Это удобно для пользователей, но на некоторых сайтах с большим количеством плагинов и кастомизаций AJAX-запросы могут замедлять загрузку страниц и увеличивать нагрузку на сервер.
Почему стоит отключить AJAX в WooCommerce
AJAX обновляет корзину, количество товаров и фильтры без перезагрузки страницы. Но при большом трафике или слабом хостинге это приводит к дополнительным запросам к серверу, которые увеличивают время отклика. Отключение AJAX позволит:
- Уменьшить количество запросов к серверу;
- Ускорить полную загрузку страницы;
- Упростить отладку и совместимость с другими плагинами;
- Снизить риски конфликтов с кастомными скриптами.
Но стоит учитывать, что пользователям придется видеть обновление корзины и фильтров только после перезагрузки страницы.
Как отключить AJAX обновление корзины в WooCommerce
Чтобы отключить AJAX добавление товара в корзину, нужно убрать соответствующий JavaScript и изменить поведение кнопок.
Добавьте следующий код в functions.php вашей дочерней темы или в плагин для кастомных функций:
function wpcompany_disable_ajax_add_to_cart() {
// Удаляем скрипт AJAX добавления в корзину
wp_dequeue_script('wc-add-to-cart');
}
add_action('wp_enqueue_scripts', 'wpcompany_disable_ajax_add_to_cart', 100);
// Отключаем AJAX для кнопок add_to_cart
function wpcompany_disable_ajax_add_to_cart_button($args, $product) {
$args['ajax_add_to_cart'] = false;
return $args;
}
add_filter('woocommerce_loop_add_to_cart_args', 'wpcompany_disable_ajax_add_to_cart_button', 10, 2);Этот код удаляет скрипт wc-add-to-cart, который отвечает за AJAX добавление товаров из каталога, и меняет аргументы кнопок, чтобы они работали с обычным запросом.
Проверка результата
После добавления кода проверьте на фронтенде, что при клике на кнопку «Добавить в корзину» страница перезагружается, а не обновляется динамически.
Отключение AJAX фильтров и обновления корзины в виджете
Если на сайте используются AJAX фильтры товаров (например, через виджеты), их тоже можно отключить, чтобы уменьшить количество запросов.
Для этого найдите в настройках плагинов фильтрации возможность отключить AJAX или добавьте следующий код:
function wpcompany_disable_woocommerce_widget_ajax() {
wp_dequeue_script('wc-price-slider');
// Аналогично отключите другие AJAX скрипты, если они есть
}
add_action('wp_enqueue_scripts', 'wpcompany_disable_woocommerce_widget_ajax', 100);Если фильтры реализованы через сторонние плагины, лучше проверить их документацию или настройки на предмет отключения AJAX.
Использование плагинов для оптимизации и управления AJAX
Для удобства можно использовать плагины, которые позволяют гибко управлять AJAX в WooCommerce, например:
- Clearfy Pro — плагин оптимизации, где есть опции отключения AJAX в WooCommerce;
- WPRemark — плагин для улучшения отзывов и работы с AJAX на сайте;
Эти решения помогут быстро и безопасно отключить излишние AJAX запросы без ручного кода.
Как отключить AJAX обновление мини-корзины
Мини-корзина в шапке сайта тоже часто обновляется через AJAX, что создает нагрузку. Чтобы отключить это, можно убрать фрагменты обновления мини-корзины.
function wpcompany_disable_fragments_update() {
wp_dequeue_script('wc-cart-fragments');
}
add_action('wp_enqueue_scripts', 'wpcompany_disable_fragments_update', 100);Этот код отключит скрипт wc-cart-fragments, отвечающий за обновление мини-корзины без перезагрузки страницы.
Последствия отключения
После отключения мини-корзина не будет обновляться динамически, и пользователю придется перезагружать страницу, чтобы увидеть изменения.
Тестирование и отладка после отключения AJAX
После внесения изменений обязательно проведите тесты:
- Проверьте, что добавление товаров работает корректно и корзина обновляется после перезагрузки;
- Оцените скорость загрузки страниц через инструменты PageSpeed Insights или GTmetrix;
- Проверьте совместимость с другими плагинами, особенно с теми, что работают с корзиной и фильтрами;
- Если возникают ошибки JavaScript, используйте консоль браузера для диагностики.
При необходимости можно включать или отключать отдельные части кода для поэтапной оптимизации.
Выводы и рекомендации
Отключение AJAX в WooCommerce — полезная практика для сайтов, испытывающих проблемы с производительностью или конфликтами скриптов. Это можно сделать вручную с помощью кода или с помощью специализированных плагинов, таких как Clearfy Pro.
Обязательно учитывайте пользовательский опыт: отключение AJAX означает больше перезагрузок страниц, но взамен — стабильность и скорость.
Используйте примеры кода из статьи в дочерней теме или плагине для кастомных функций, чтобы сохранить изменения при обновлении WooCommerce.