WooCommerce активно использует AJAX для обновления данных корзины, фильтров и других элементов без перезагрузки страницы. Это удобно для пользователей, но иногда приводит к замедлению сайта, особенно на хостингах с ограниченными ресурсами или при большом количестве посетителей. В этой статье разберём, как отключить AJAX в WooCommerce, чтобы повысить скорость загрузки страниц и снизить нагрузку на сервер.
Почему стоит отключить AJAX в WooCommerce
AJAX-запросы позволяют динамически обновлять контент без полной перезагрузки страницы. Однако каждое такое обращение к серверу требует ресурсов и может замедлять работу сайта, особенно если:
- Вы используете много AJAX-обновлений (обновление корзины, фильтры, поиск).
- Ваш хостинг не отличается высокой производительностью.
- На сайте много посетителей одновременно.
Отключение AJAX в некоторых местах поможет уменьшить количество запросов и ускорить загрузку страниц.
Какие части WooCommerce основаны на AJAX
Основные функциональные возможности WooCommerce, использующие AJAX:
- Обновление корзины без перезагрузки страницы.
- Фильтры товаров на страницах категории и магазина.
- Добавление товара в корзину из списка товаров.
Мы можем отключать AJAX выборочно, в зависимости от потребностей.
Отключение AJAX добавления товаров в корзину
По умолчанию WooCommerce поддерживает AJAX добавление товаров в корзину. Для отключения этой функции добавьте следующий код в файл functions.php вашей темы или в кастомный плагин:
function wpinc_disable_ajax_add_to_cart() {
if ( class_exists( 'WooCommerce' ) ) {
wp_dequeue_script( 'wc-add-to-cart' );
}
}
add_action( 'wp_enqueue_scripts', 'wpinc_disable_ajax_add_to_cart', 100 );Этот код удалит скрипт, отвечающий за AJAX добавление в корзину, и кнопки будут вести на отдельную страницу корзины с обычной перезагрузкой.
Отключение AJAX обновления корзины на странице корзины
Для отключения AJAX обновления количества товаров в корзине используйте следующий фильтр:
add_filter( 'woocommerce_cart_item_quantity', 'wpinc_disable_ajax_cart_quantity_update', 10, 3 );
function wpinc_disable_ajax_cart_quantity_update( $product_quantity, $cart_item_key, $cart_item ) {
// Возвращаем обычное поле ввода без AJAX
return '<input type="number" name="cart[' . esc_attr( $cart_item_key ) . '][qty]" value="' . esc_attr( $cart_item['quantity'] ) . '" min="0" />';
}Это уберёт AJAX обновление количества и будет работать через стандартную отправку формы.
Отключение AJAX фильтров товаров
Если на вашем сайте используются AJAX фильтры, например через виджеты WooCommerce или плагин Clearfy Pro, можно переключить их на классическую загрузку страниц. В настройках плагина отключите AJAX, либо вручную измените параметры виджета фильтра.
Пример отключения AJAX фильтра товаров через код
Если вы используете кастомные AJAX фильтры, можно убрать JS-обработчики следующим образом:
function wpinc_remove_ajax_filters() {
wp_dequeue_script( 'wc-price-slider' );
wp_dequeue_script( 'wc-product-filters' );
}
add_action( 'wp_enqueue_scripts', 'wpinc_remove_ajax_filters', 100 );Это отключит стандартные скрипты фильтрации, и фильтры будут работать с перезагрузкой страницы.
Рекомендации по ускорению WooCommerce без AJAX
После отключения AJAX обратите внимание на следующие моменты для поддержания хорошей производительности:
- Используйте кэширование страниц и объектов (например, с помощью плагина Clearfy Pro или WPRemark).
- Оптимизируйте изображения товаров (используйте WebP и lazy load).
- Минимизируйте количество плагинов, влияющих на фронтенд.
- Используйте современные темы, оптимизированные под WooCommerce, например Reboot или Bono.
Заключение
Отключение AJAX в WooCommerce — эффективный способ снизить нагрузку на сервер и ускорить загрузку страниц, особенно на небольших и средних магазинах. Вы можете отключать AJAX выборочно: для добавления в корзину, обновления корзины или фильтров товаров, в зависимости от конкретных узких мест в производительности. Не забывайте комбинировать это с другими методами оптимизации.