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

Проблема: цена товара не обновляется при выборе вариаций

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

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

Чтобы понять, почему цена не обновляется, выполните следующие шаги:

  • Проверьте, используется ли стандартный шаблон single-product/add-to-cart/variable.php или кастомный;
  • Откройте консоль браузера (F12) и посмотрите, есть ли JavaScript ошибки при выборе вариации;
  • Проверьте, вызывается ли скрипт wc-add-to-cart-variation.js (обычно подключается автоматически);
  • Отключите все сторонние плагины, кроме WooCommerce, чтобы исключить конфликты;
  • Проверьте, не изменяют ли другие скрипты или хуки вывод цены.

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

Если используется кастомный шаблон вариаций, необходимо вручную вызвать обновление цены при выборе вариации через JavaScript и PHP. Рассмотрим пример:

1. Убедитесь, что в шаблоне подключены стандартные поля

В шаблоне должны присутствовать элементы с классами .woocommerce-variation-price и .single_variation_wrap, которые отвечают за обновление цены.

2. Добавьте JavaScript для принудительного обновления цены

Если стандартный скрипт не срабатывает, добавьте следующий код в файл темы functions.php или отдельный JS файл, подключаемый на странице товара:

jQuery(document).ready(function($){
    $('.variations_form').on('show_variation', function(event, variation){
        var price_html = variation.price_html;
        $('.woocommerce-variation-price').html(price_html);
        // Обновляем цену в других местах, если нужно
    });
});

3. Используйте хук для корректировки цены вариаций (если нужно)

Если цена вариаций неправильно рассчитывается, можно фильтровать цену через PHP:

add_filter('woocommerce_available_variation', 'custom_variation_price_html', 10, 3);
function custom_variation_price_html($variation_data, $product, $variation) {
    // Пример: добавляем 10% наценку на все вариации
    $price = $variation->get_price();
    $new_price = $price * 1.1;
    $variation_data['price_html'] = wc_price($new_price);
    return $variation_data;
}

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

  • Откройте страницу товара с вариациями;
  • Выберите разные варианты атрибутов;
  • Убедитесь, что цена меняется мгновенно и отображается корректно;
  • Просмотрите консоль браузера — ошибок JavaScript быть не должно;
  • Проверьте работу на мобильных устройствах и в разных браузерах.

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

  • Класс .woocommerce-variation-price отсутствует: цена не обновится автоматически. Добавьте этот класс в HTML шаблона.
  • JavaScript ошибки: конфликты с другими скриптами блокируют обновление. Проверьте консоль, отключите проблемные плагины.
  • Кеширование страницы: динамическое обновление цены блокируется кешем. Отключите кеширование для страниц товаров с вариациями.
  • Неверный фильтр цены: если изменяете цену через PHP, убедитесь, что используете правильный хук woocommerce_available_variation.

Практические советы по оптимизации и безопасности

  • Используйте минимально необходимое количество кастомного JavaScript, чтобы не замедлять страницу.
  • Делайте проверку на стороне сервера стоимости товаров при оформлении заказа, чтобы избежать манипуляций с ценой.
  • Отключайте кеширование для страниц с динамическими элементами, например, с помощью плагина Clearfy Pro (https://wpshop.ru/plugins/clearfy?source=wpnote.ru&medium=article&campaign=woocommerce-avtomaticheskoe-izmenenie-stoimosti-tovara-pri-vybore-variaciy).
  • Тестируйте работу вариаций после обновления WooCommerce и темы.

Сравнение вариантов решения проблемы

МетодПлюсыМинусы
Использование стандартных шаблонов WooCommerceГарантирована поддержка обновлений, минимум баговОграниченная кастомизация дизайна и функционала
Кастомный шаблон + JavaScript обновление ценыГибкость в дизайне, контроль над отображениемТребует навыков JavaScript, возможны ошибки в коде
Фильтрация цены через хук PHPМожно динамично менять цены без JSНе обновляет цену на клиенте без дополнительного JS
WooCommerce: невозможно изменить складские запасы через админку — как исправить
17.04.2026
WooCommerce: автоматическое изменение стоимости товара при выборе вариантов
25.05.2026
Как удалить кеш в WordPress: практические способы и примеры
21.11.2025
Как отладить проблемы с отправкой писем в WordPress
03.03.2026
Как создать автоматическую подписку на рассылку в WordPress с помощью WPRemark
31.01.2026