WooCommerce активно использует AJAX для динамического обновления корзины, фильтров и других элементов без перезагрузки страницы. Это удобно, но на некоторых сайтах с большим количеством плагинов или специфическими настройками AJAX-запросы могут замедлять загрузку страниц и увеличивать нагрузку на сервер. В этой статье разберём, как отключить AJAX в WooCommerce на практике, чтобы улучшить производительность вашего сайта на WordPress.
Почему стоит отключить AJAX в WooCommerce? Проблемы производительности и UX
AJAX позволяет обновлять части страницы без полной перезагрузки, что улучшает пользовательский опыт и снижает трафик. Однако в WooCommerce AJAX используется в нескольких местах:
- Обновление мини-корзины при добавлении товара
- Фильтрация товаров и пагинация на страницах магазина
- Обновление содержимого корзины и страницы оформления заказа
При большом количестве запросов и сложных кастомизациях AJAX может вызывать следующие проблемы:
- Задержки в рендеринге контента из-за ожидания ответов сервера
- Конфликты с другими плагинами, использующими AJAX
- Повышенная нагрузка на сервер из-за частых AJAX-запросов
В некоторых случаях отключение AJAX и возврат к стандартной загрузке страниц ускоряет работу сайта, повышая стабильность и предсказуемость поведения.
Как отключить AJAX в WooCommerce: пошаговое руководство
WooCommerce не предоставляет в настройках простой опции для отключения всех AJAX-запросов, поэтому придётся использовать кодовые решения, которые добавляются в файл functions.php вашей темы или в отдельный плагин.
Отключение AJAX добавления товара в корзину
Для отключения динамического добавления в корзину (обычно на страницах магазина) можно использовать следующий код:
function wpcoding_disable_ajax_add_to_cart() {
if ( class_exists('WooCommerce') ) {
wp_dequeue_script('wc-add-to-cart');
}
}
add_action('wp_enqueue_scripts', 'wpcoding_disable_ajax_add_to_cart', 100);Этот код отключит скрипт WooCommerce, отвечающий за AJAX добавление товаров в корзину. После этого добавление товара будет происходить через стандартное обновление страницы.
Отключение AJAX фильтров и пагинации
Если на вашем сайте используются AJAX-фильтры (например, с плагином WooCommerce Product Filters) или AJAX пагинация, их необходимо настроить отдельно. Для стандартных функций WooCommerce AJAX пагинация не используется, но сторонние плагины могут её включать.
В случае использования плагина WooCommerce Product Filters можно отключить AJAX в настройках фильтров. Если фильтры реализованы кастомно, необходимо убрать JS-обработчики AJAX и переключиться на обычную отправку формы.
Отключение обновления мини-корзины через AJAX
Обновление мини-корзины через AJAX также можно отключить, чтобы минимизировать запросы:
function wpcoding_disable_ajax_fragments( $fragments ) {
return [];
}
add_filter( 'woocommerce_add_to_cart_fragments', 'wpcoding_disable_ajax_fragments' );Этот фильтр предотвращает обновление мини-корзины после добавления товара, что уменьшает количество AJAX-запросов.
Проверка и отладка после отключения AJAX
После внесения изменений важно проверить работу сайта на разных устройствах и браузерах. Обратите внимание на следующие моменты:
- Добавление товаров в корзину происходит с перезагрузкой страницы
- Фильтрация и переход по страницам магазина работают корректно
- Отсутствие JS-ошибок в консоли браузера
Если после отключения AJAX появляются неудобства для пользователей, стоит взвесить плюсы и минусы и возможно вернуть отдельные функции обратно.
Рекомендуемые плагины для управления AJAX и оптимизации WooCommerce
Для более гибкого управления AJAX в WooCommerce и оптимизации сайта можно использовать следующие плагины:
- Clearfy Pro – мощный инструмент для оптимизации и отключения ненужных скриптов, включая AJAX-запросы.
- WPRemark – плагин для тонкой настройки WooCommerce, включая оптимизацию запросов и кеширование.
Выводы и рекомендации
Отключение AJAX в WooCommerce может значительно повысить производительность сайта в случаях, когда AJAX-запросы вызывают задержки или конфликты. Важно тестировать изменения и учитывать UX, так как AJAX улучшает интерактивность. Используйте приведённые кодовые сниппеты и комбинируйте их с проверенными плагинами для достижения оптимального результата.