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

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

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

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

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

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

Для корректной работы вариаций WooCommerce важно использовать стандартный JS и PHP функционал. Ниже - пример, как вывести кастомную информацию о наличии и цене при выборе атрибута и как добавить дополнительную проверку статуса наличия на сервере.

1. Проверка вариаций в PHP

Добавим фильтр для изменения доступности вариаций и передачи дополнительного параметра с наличием:

add_filter('woocommerce_available_variation', 'custom_variation_availability_data', 10, 3);
function custom_variation_availability_data($variation_data, $product_variable, $variation) {
    // Добавляем кастомное поле наличия
    $variation_data['custom_in_stock'] = $variation->is_in_stock();
    return $variation_data;
}

2. Кастомный JavaScript для обновления цены и статуса

Добавим JS, который будет отслеживать изменение вариации и отображать наличие:

jQuery(document).ready(function($) {
    $('.variations_form').on('found_variation', function(event, variation) {
        // Обновляем цену
        $('.woocommerce-variation-price').html(variation.price_html);
        // Обновляем наличие
        if (variation.custom_in_stock) {
            $('.stock').removeClass('out-of-stock').addClass('in-stock').text('В наличии');
        } else {
            $('.stock').removeClass('in-stock').addClass('out-of-stock').text('Нет в наличии');
        }
    });
});

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

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

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

  • Не обновляется цена или наличие: проверьте, что вариации действительно имеют цену и статус наличия в админке WooCommerce.
  • JavaScript не срабатывает: убедитесь, что jQuery подключен и нет конфликтов с другими скриптами.
  • AJAX запросы блокируются: проверьте настройку файрволлов и плагинов безопасности, они могут блокировать стандартные AJAX WooCommerce.
  • Тема не поддерживает вариации: если кастомная тема, проверьте, что шаблоны single-product/variation.php не изменены неправильно.

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

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

Сравнение методов обновления вариаций

МетодПлюсыМинусы
Стандартный WooCommerce JS + PHPПрост в реализации, поддерживается ядром, быстрый откликОграничен возможностями стандартного функционала
Кастомные AJAX-запросыГибкость, можно добавить дополнительную логикуСложнее в реализации, требует контроля безопасности и производительности
Плагины для вариацийМного готовых функций, удобство для администратораМогут нагружать сайт, приводить к конфликтам
Удаление неиспользуемых таблиц базы данных в WordPress для оптимизации
25.02.2026
Автоматическое изменение стоимости товара WooCommerce при изменении количества
07.06.2026
WooCommerce: автоматическое удаление неактивных заказов по дате
12.07.2026
Как использовать WP-CLI для массового управления постами в WordPress
22.05.2026
Как сделать отзывную AJAX-форму обработки на WordPress
05.01.2026