WooCommerce: автоматическое изменение цены товара при изменении атрибутов без перезагрузки страницы

Проблема: цены не обновляются при выборе атрибутов без перезагрузки

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

Диагностика проблемы

  • Проверьте, что вариативный товар создан корректно с атрибутами и вариациями, каждая вариация имеет свою цену.
  • Откройте товар на фронтенде и переключайте атрибуты. Если цена меняется без перезагрузки — значит базовый JS работает.
  • Если цена не меняется, убедитесь, что в теме подключены скрипты WooCommerce: wc-add-to-cart-variation.
  • Проверьте консоль браузера на наличие JS ошибок, которые могут блокировать обновление.
  • Проверьте, не переопределена ли функция обновления цены в шаблонах темы.

Пошаговое решение

1. Подключение стандартного скрипта WooCommerce

Убедитесь, что в functions.php вашей темы подключен скрипт вариаций:

function enqueue_wc_variation_script() {
    if ( is_product() ) {
        wp_enqueue_script( 'wc-add-to-cart-variation' );
    }
}
add_action( 'wp_enqueue_scripts', 'enqueue_wc_variation_script' );

2. Добавление кастомного JS для динамического обновления цены

Если вы хотите кастомно обработать смену атрибутов и обновить цену без перезагрузки, добавьте следующий код:

jQuery(function($) {
    $('form.variations_form').on('found_variation', function(event, variation) {
        // Обновляем цену в блоке с ценой
        $('.woocommerce-variation-price .price').html(variation.price_html);
        // Можно обновить другие элементы, например, скидки, наличие
        $('.stock').html(variation.availability_html);
    });
});

Этот код слушает событие found_variation, которое вызывается WooCommerce при выборе вариации, и обновляет цену и наличие товара.

3. Проверка и кастомизация HTML структуры

Убедитесь, что селекторы .woocommerce-variation-price .price и .stock соответствуют вашей теме. При необходимости замените на актуальные селекторы.

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

  • Откройте страницу вариативного товара.
  • Выберите разные комбинации атрибутов.
  • Наблюдайте, как цена меняется мгновенно без перезагрузки.
  • Проверьте консоль браузера, чтобы не было ошибок JS.
  • Проверьте, что цена соответствует цене выбранной вариации в админке WooCommerce.

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

  • Скрипт wc-add-to-cart-variation не подключен: нет обновления цены. Решение: подключить скрипт через wp_enqueue_script.
  • Неправильные селекторы в JS: цена не обновляется в верном месте. Решение: проверить структуру HTML и заменить селекторы.
  • Конфликты с другими плагинами или темой: ошибки в консоли. Решение: отключить плагины поочередно, проверить кастомные скрипты.
  • Отсутствие цен у вариаций: при выборе вариации цена не отображается. Решение: в админке WooCommerce у каждой вариации должна быть цена.

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

  • Не переопределяйте стандартные скрипты WooCommerce без необходимости, чтобы не потерять совместимость.
  • Используйте минимизированные и сжатые версии JS для ускорения загрузки.
  • Проверяйте все кастомные скрипты на кроссбраузерность и отсутствие утечек памяти.
  • При добавлении кастомного JS используйте wp_add_inline_script или отдельный файл с правильной зависимостью от wc-add-to-cart-variation.

Сравнение вариантов реализации обновления цены при смене атрибутов

МетодДостоинстваНедостаткиПример использования
Стандартный скрипт WooCommerceЛегко подключить, поддерживается WooCommerceЗависит от темы, может не работать без кастомизацийwp_enqueue_script('wc-add-to-cart-variation')
Кастомный JS на событии found_variationТочный контроль над обновлением элементовТребует знания JS и структуры темыПример из статьи выше
Полная кастомная реализация AJAXМаксимальная гибкостьСложно, требует поддержки и тестированияРазработка с нуля
Как автоматически удалять неиспользуемые изображения в WordPress
15.03.2026
Как создать динамический фильтр по мета-полям в WordPress с примером кода
28.01.2026
WooCommerce: автоматическое изменение стоимости доставки по весу товаров
04.07.2026
Как создать автоматический импорт событий в WordPress через REST API
11.04.2026
Как создать динамический фильтр по таксономиям в WordPress с примером кода
09.02.2026