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

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Проблема обновления цены опций настраиваемого поля при изменении варианта WooCommerce

Сообщение Anonymous »

Я пытаюсь добавить настраиваемые поля на свой сайт WooCommerce, чтобы обновлять цену в зависимости от статуса гарантии, выбранного клиентом при выборе варианта продукта. В частности, я хочу, чтобы цена корректировалась в зависимости от того, истек ли срок гарантии: в течение 1–6 месяцев, более 6 месяцев или она не активирована.
Изображение

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

Код: Выделить всё

add_action('woocommerce_single_variation', 'add_custom_options', 5);
function add_custom_options() {
?>

[h4]Great, let's talk about the more details:[/h4]

1. Is it still under warranty?

 No, the warranty has expired.


 Yes, 1-6 months warranty


 Yes, over 6 months warranty


 Yes, 1 year warranty & unactivated





jQuery(document).ready(function($) {
var originalPrice;

function getOriginalPrice() {
var priceText = $('.woocommerce-variation-price .woocommerce-Price-amount.amount').first().text();
return parseFloat(priceText.replace(/[^\d.]/g, ''));
}

function updatePrice() {
if (isNaN(originalPrice)) {
originalPrice = getOriginalPrice();
}

var warrantyMultiplier = 1.00;

if ($('input[name="warranty_status"]:checked').val() === 'no') {
warrantyMultiplier = 0.90; // No warranty, deduct 10%
} else if ($('input[name="warranty_status"]:checked').val() === '1-6months') {
warrantyMultiplier = 0.92; // 1-6 months warranty, deduct 8%
} else if ($('input[name="warranty_status"]:checked').val() === 'over6months') {
warrantyMultiplier = 0.95; // Over 6 months warranty, deduct 5%
}

var newPrice = Math.round(originalPrice * warrantyMultiplier);

$('.woocommerce-variation-price .woocommerce-Price-amount.amount').html('$' + newPrice + '');

// Update hidden input to ensure the new price is used when added to the cart
$('#custom_price').val(newPrice);
}

// Clear the selected state of all custom options
function resetCustomOptions() {
$('input[name="warranty_status"]').prop('checked', false);
}

$('form.variations_form').on('woocommerce_variation_has_changed', function() {
resetCustomOptions();  // Reset custom options
originalPrice = getOriginalPrice();  // Get new price each time a variation is switched
updatePrice();
});

$('input[name="warranty_status"]').change(function() {
updatePrice();
});

originalPrice = getOriginalPrice();
updatePrice();
});




Подробнее здесь: [url]https://stackoverflow.com/questions/79140428/custom-field-options-price-update-issue-on-woocommerce-variation-change[/url]
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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