wpurok.ru wordpress WPUrok

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

Проблема: почему нужно отключать AJAX-подгрузку товаров

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

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

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

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

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

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

Часто AJAX подгрузка реализуется темой. Для её отключения нужно найти в functions.php или в соответствующем js-файле вызовы AJAX пагинации и отключить их.

Пример удаления скрипта AJAX пагинации в functions.php:

function disable_woocommerce_ajax_pagination() {
    wp_dequeue_script('wc-ajax-pagination');
}
add_action('wp_enqueue_scripts', 'disable_woocommerce_ajax_pagination', 100);

Если такого скрипта нет, переключитесь на стандартную тему Storefront или TwentyTwentyOne и проверьте поведение.

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

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

add_filter('woocommerce_is_ajax_enabled', '__return_false');

3. Отключение AJAX в популярных плагинах фильтров

Если используется плагин фильтров, например, WOOF или FacetWP, отключите AJAX в настройках плагина.

4. Проверка кода темы и JS

Просмотрите JS-файлы на предмет обработчиков событий пагинации с использованием AJAX и удалите или закомментируйте их.

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

  • Перейдите на страницу каталога товаров.
  • Нажмите на пагинацию — страница должна полностью перезагружаться.
  • Фильтры должны работать с полной перезагрузкой страницы.
  • В консоли браузера исчезнут ошибки JavaScript, связанные с AJAX.
  • Проверьте индексацию страницы с помощью Google Search Console — динамические подгрузки не должны мешать индексации.

Частые ошибки и как их исправить

  • Ошибка: Скрипт AJAX подгрузки продолжает работать после деактивации.
    Причина: Кэш браузера или плагина.
    Решение: Очистите кэш сайта и браузера.
  • Ошибка: После отключения AJAX пагинация не работает корректно.
    Причина: Неправильный шаблон темы или кастомный код, который ожидает AJAX.
    Решение: Проверьте шаблоны WooCommerce archive-product.php, category-product.php — они должны поддерживать стандартную пагинацию.
  • Ошибка: Фильтры не применяются.
    Причина: AJAX отключен, но JS плагина фильтров не обновляет страницу.
    Решение: Настройте плагин фильтров на работу без AJAX или используйте стандартные фильтры WooCommerce.

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

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

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

МетодОписаниеПлюсыМинусы
Отключение скриптов AJAX в темеУдаление или отключение JS скриптов, отвечающих за AJAXПолный контроль, быстрое решениеТребует знания структуры темы, может сломать UX
Использование фильтров WooCommerceОтключение AJAX через хуки и фильтрыПростое решение без правки JSНе всегда работает, зависит от реализации темы/плагинов
Настройка плагинов фильтровОтключение AJAX в настройках плагиновНе требует кода, безопасноЗависит от возможностей плагина
×
Сайт, который вау!
-15%

на премиум-тему
JournalX для WordPress

Хватай промо и действуй ⋙