Как получить количество выбранных вариантов продукта на клиентской стороне в woocommerce ⇐ Javascript
-
Гость
Как получить количество выбранных вариантов продукта на клиентской стороне в woocommerce
На моей странице продукта woocommerce я хочу разрешить клиентам делать предварительный заказ (предзаказ) на продукты, когда количество вариантов на складе равно 0 или меньше И для этого варианта включены отложенные заказы.
Чтобы сделать это очевидным для клиентов, текст кнопки «Добавить в корзину» должен измениться на «Добавить предварительный заказ в корзину», когда выбран вариант, соответствующий этим критериям.
Я считаю, что товар отсутствует на складе, если уровень запасов меньше 1. Но в JSON продукта, если для варианта разрешены дозаказы, то variationData.[X].is_in_stock всегда остается правда, независимо от стоимости акций. Я бы проигнорировал это и использовал количество на складе, но его нет в JSON продукта.
Мне удалось добиться желаемой функциональности на стороне клиента, но она хакерская (см. ниже).
МОЕ ХАКИЧЕСКОЕ РЕШЕНИЕ
Добавьте скрытое поле ввода HTML, содержащее количество запасов каждого варианта, в variation-add-to-cart-button.php
Затем я использую следующую клиентскую сторону JS, когда пользователь изменяет вариант, чтобы получить уровень запаса выбранных вариантов из правильного скрытого поля, и использую это в своей логике для обновления текста кнопки «Добавить в корзину».
jQuery('input[name=variation_id].variation_id').change(function () { constvariationID = jQuery(this).val(); constvariationData = jQuery('form.variations_form').data("product_variations"); constvariationStockQty = jQuery('input[name=' +variationID + '_stock_qty]').val(); //Находим текущий вариант товара в формате JSON jQuery(variationData).each(функция (индекс, вариация) { if (variationID ==variation.variation_id) { //Выясняем, доступен ли товар по предзаказу или нет if (variationStockQty > 0 &&variation.is_in_stock &&variation.is_purchasable) { jQuery('.single_add_to_cart_button').text('Добавить в корзину'); } еще если (variation.backorders_allowed) { jQuery('.single_add_to_cart_button').text('Добавить предварительный заказ в корзину'); } еще { jQuery('.single_add_to_cart_button').text('Продано'); } } }); });` Любая помощь в поиске лучшего способа достижения этой цели будет принята с благодарностью!
На моей странице продукта woocommerce я хочу разрешить клиентам делать предварительный заказ (предзаказ) на продукты, когда количество вариантов на складе равно 0 или меньше И для этого варианта включены отложенные заказы.
Чтобы сделать это очевидным для клиентов, текст кнопки «Добавить в корзину» должен измениться на «Добавить предварительный заказ в корзину», когда выбран вариант, соответствующий этим критериям.
Я считаю, что товар отсутствует на складе, если уровень запасов меньше 1. Но в JSON продукта, если для варианта разрешены дозаказы, то variationData.[X].is_in_stock всегда остается правда, независимо от стоимости акций. Я бы проигнорировал это и использовал количество на складе, но его нет в JSON продукта.
Мне удалось добиться желаемой функциональности на стороне клиента, но она хакерская (см. ниже).
МОЕ ХАКИЧЕСКОЕ РЕШЕНИЕ
Добавьте скрытое поле ввода HTML, содержащее количество запасов каждого варианта, в variation-add-to-cart-button.php
Затем я использую следующую клиентскую сторону JS, когда пользователь изменяет вариант, чтобы получить уровень запаса выбранных вариантов из правильного скрытого поля, и использую это в своей логике для обновления текста кнопки «Добавить в корзину».
jQuery('input[name=variation_id].variation_id').change(function () { constvariationID = jQuery(this).val(); constvariationData = jQuery('form.variations_form').data("product_variations"); constvariationStockQty = jQuery('input[name=' +variationID + '_stock_qty]').val(); //Находим текущий вариант товара в формате JSON jQuery(variationData).each(функция (индекс, вариация) { if (variationID ==variation.variation_id) { //Выясняем, доступен ли товар по предзаказу или нет if (variationStockQty > 0 &&variation.is_in_stock &&variation.is_purchasable) { jQuery('.single_add_to_cart_button').text('Добавить в корзину'); } еще если (variation.backorders_allowed) { jQuery('.single_add_to_cart_button').text('Добавить предварительный заказ в корзину'); } еще { jQuery('.single_add_to_cart_button').text('Продано'); } } }); });` Любая помощь в поиске лучшего способа достижения этой цели будет принята с благодарностью!
Мобильная версия