Как получить количество выбранных вариантов продукта на клиентской стороне в woocommerceJavascript

Форум по 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('Продано'); } } }); });` Любая помощь в поиске лучшего способа достижения этой цели будет принята с благодарностью!
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»