wpurok.ru wordpress WPUrok

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

Диагностика проблемы с AJAX-подгрузкой в WooCommerce

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

  • Отключите все сторонние плагины, кроме WooCommerce, и переключитесь на стандартную тему Storefront или Reboot (https://wpshop.ru/themes/reboot?utm_source=wpurok.ru&utm_medium=article&utm_campaign=kak-otklyuchit-ajax-podgruzku-tovarov-v-woocommerce).
  • Проверьте поведение пагинации и фильтров товаров. Если при клике на пагинацию страница не перезагружается, а товары обновляются динамически — AJAX включён.
  • Посмотрите в консоль браузера (F12 → Console) на наличие ошибок JavaScript, связанных с AJAX-запросами.
  • Для более глубокой диагностики используйте Network (Сеть) во вкладке разработчика, чтобы отследить AJAX-запросы и их ответы.

Пошаговое решение для отключения AJAX-подгрузки товаров

В WooCommerce AJAX подгрузка чаще всего реализована через темы или дополнительные плагины, либо встроена в шаблоны каталога. Чтобы отключить AJAX-подгрузку, выполните следующие действия.

1. Отключение AJAX-подгрузки в теме

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

add_filter('woocommerce_product_filters_ajax_enabled', '__return_false');

Этот фильтр отключает AJAX в стандартных фильтрах WooCommerce. Если тема использует собственные скрипты, нужно отключить их вручную, например, deregister скриптов:

function disable_theme_ajax_scripts() {
    wp_dequeue_script('theme-ajax-filter'); // пример, название скрипта уточните в теме
    wp_deregister_script('theme-ajax-filter');
}
add_action('wp_enqueue_scripts', 'disable_theme_ajax_scripts', 100);

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

Если вы используете плагины фильтрации товаров с AJAX (например, FacetWP, WooCommerce Product Filter), то в их настройках обычно есть опция отключения AJAX. Если такой опции нет, нужно обратиться к документации или отключить плагин.

3. Отключение AJAX-подгрузки в WooCommerce Shop Pagination

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

function disable_woocommerce_ajax_pagination() {
    wp_dequeue_script('woocommerce-ajax-pagination'); // пример, имя скрипта уточните
}
add_action('wp_enqueue_scripts', 'disable_woocommerce_ajax_pagination', 100);

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

После внесения изменений:

  • Очистите кеш браузера и сайта (если используете кеширующие плагины или CDN).
  • Перейдите на страницу каталога товаров и кликните по пагинации или фильтрам.
  • Проверьте, что при переключении страниц происходит полная перезагрузка страницы, а не динамическая подгрузка.
  • Проверьте консоль браузера на отсутствие ошибок JavaScript.
  • Используйте Network вкладку разработчика, чтобы убедиться в отсутствии AJAX-запросов при навигации.

Частые ошибки при отключении AJAX и их исправление

  • Не отключается AJAX после внесения кода: Возможно, код добавлен в неправильный файл или приоритет хука слишком низкий. Используйте приоритет 100 и убедитесь, что код в дочерней теме.
  • Ошибка JavaScript в консоли после отключения скриптов: Отключение скриптов без замены логики может привести к ошибкам. Проверьте, что другие скрипты не зависят от отключаемых.
  • Фильтры перестали работать: Если фильтрация товаров завязана на AJAX, отключение может потребовать дополнительных изменений в шаблонах.
  • Кеширование мешает увидеть изменения: Очистите все уровни кеша и отключите кеширование на время теста.

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

  • Если AJAX-подгрузка вызывает проблемы с производительностью, рассмотрите возможность оптимизации серверных запросов, кеширования результатов или внедрения пагинации с лимитами.
  • Отключение AJAX пагинации может улучшить SEO, так как поисковые системы лучше индексируют обычные URL с параметрами пагинации.
  • Всегда создавайте дочернюю тему для внесения изменений, чтобы не потерять их при обновлении.
  • Используйте инструменты типа Query Monitor для мониторинга запросов и выявления узких мест.

Сравнение вариантов отключения AJAX-подгрузки WooCommerce

МетодОписаниеПлюсыМинусы
Фильтр 'woocommerce_product_filters_ajax_enabled'Отключает AJAX в стандартных фильтрах WooCommerceПростой, встроенный способРаботает только с фильтрами WooCommerce
Отключение скриптов темыУдаление скриптов AJAX темы через wp_dequeue_scriptПолный контроль, отключение любых AJAX-функций темыТребует знания названий скриптов и может вызвать ошибки
Отключение AJAX в плагинах фильтрацииВыключение опции или отключение плагинаПростой для управления через UIМожет снизить удобство пользователя
×
Обнови свой WordPress!

Держи скидку 15% на премиум тему Reboot

Купить со скидкой ⋙