WooCommerce: как автоматически отключить AJAX добавление в корзину для определённых товаров

Почему отключать AJAX добавление в корзину для некоторых товаров

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

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

  • При добавлении товара в корзину страница не обновляется, но корзина не изменяется.
  • Появляются ошибки JavaScript в консоли браузера.
  • Особые товары с вариациями или дополнительными опциями не добавляются корректно через AJAX.
  • Плагины для кастомизации корзины или оформления заказа конфликтуют с AJAX.

Пошаговое решение: отключаем AJAX добавление для выбранных товаров

WooCommerce по умолчанию использует AJAX для кнопок с классом ajax_add_to_cart. Чтобы отключить AJAX для конкретных товаров, нужно убрать этот класс из кнопки добавления в корзину для них.

Шаг 1. Определяем ID товаров или категории, для которых отключаем AJAX

Например, у нас есть товары с ID 45, 67 и категория «custom-products».

Шаг 2. Добавляем фильтр для изменения кнопки добавления в корзину

add_filter('woocommerce_loop_add_to_cart_link', 'disable_ajax_add_to_cart_for_specific_products', 10, 2);
function disable_ajax_add_to_cart_for_specific_products($html, $product) {
    $disable_ajax_ids = array(45, 67);
    $disable_ajax_cat = 'custom-products';

    if (in_array($product->get_id(), $disable_ajax_ids) || has_term($disable_ajax_cat, 'product_cat', $product->get_id())) {
        // Убираем класс ajax_add_to_cart
        $html = str_replace('ajax_add_to_cart ', '', $html);
    }
    return $html;
}

Шаг 3. Проверяем, что кнопки для выбранных товаров не содержат класс AJAX

Откройте страницу магазина, найдите указанные товары и убедитесь, что кнопка добавления в корзину не содержит класс ajax_add_to_cart. Это отключит AJAX и заставит страницу перезагружаться при добавлении товара.

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

  • Добавьте товар из списка с отключённым AJAX в корзину и убедитесь, что страница перезагружается.
  • Добавьте обычный товар — кнопка должна работать через AJAX без перезагрузки.
  • Проверьте консоль браузера на отсутствие ошибок JavaScript.

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

  • Класс ajax_add_to_cart не удаляется. Проверьте, что фильтр подключён и не переопределяется другими плагинами или темой.
  • Не тот товар отключается от AJAX. Убедитесь, что ID товара и название категории указаны правильно. Используйте var_dump() или error_log() для отладки.
  • Кнопка добавления в корзину исчезает. Проверьте, что в шаблоне кнопки нет обязательных классов, кроме ajax_add_to_cart, которые отвечают за отображение.

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

  • Отключение AJAX для части товаров снижает нагрузку на клиентскую часть и предотвращает баги, но при большом количестве товаров с отключённым AJAX может увеличиться количество перезагрузок страниц — следите за UX.
  • Используйте кеширование страниц и объектов WooCommerce для ускорения загрузки без ущерба функциональности.
  • Всегда тестируйте изменения на staging-сайте перед внедрением в продакшен.

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

МетодПлюсыМинусыПрименение
Удаление класса ajax_add_to_cart через фильтрПростота, гибкость по товарам и категориям, не требует плагиновТребует понимания PHP и WooCommerce хуковЛучше для кастомных сайтов и разработчиков
Использование плагинов для управления AJAXУдобный UI, не требует кодаМожет быть тяжёлым, конфликтовать с другими плагинами, ограничена настройкамиДля пользователей без навыков программирования
Полное отключение AJAX в темеПростота реализацииПотеря UX для всех товаровЕсли AJAX вызывает ошибки на всем сайте
WooCommerce: как автоматически отключить AJAX добавление в корзину для определённых товаров
01.06.2026
Как запретить регистрацию пользователей в WordPress с помощью кода и плагинов
10.12.2025
Как использовать REST API в WordPress для создания настраиваемых приложений
08.11.2025
Как добавить автоматическое обновление плагинов в WordPress без помощи коммерческих пакетов
20.12.2025
Автоматическое удаление неактивных товаров в WooCommerce: практическое решение
23.05.2026