Woocommerce. Изменение цен в зависимости от количества
Всем привет. Мне удалось реализовать решение для вариативного товара. Все работает. Цена изменяется в зависимости от вариации и от количества. Ниже рабочий код. Но не могу добиться такого же эффекта для обычного товара.
Код для вариативного товара:
add_action('wp_footer', 'custom_variation_price_script');
function custom_variation_price_script() {
if ( is_product() ) {
?>
<script>
jQuery(function($) {
function updatePrice() {
var variation_id = $('input.variation_id').val();
var quantity = $('input[name="quantity"]').val();
$.ajax({
type: 'POST',
url: '<?php echo admin_url( 'admin-ajax.php' ); ?>',
data: {
action: 'get_variation_price',
variation_id: variation_id,
quantity: quantity
},
success: function(response) {
$('.wpr-product-price').html(response);
}
});
}
$('input.variation_id').change(updatePrice);
$('input[name="quantity"]').on('input', updatePrice);
$('.fa-plus, .fa-minus').click(function() {
setTimeout(updatePrice, 1);
});
});
</script>
<?php
}
}
add_action('wp_ajax_get_variation_price', 'get_variation_price');
add_action('wp_ajax_nopriv_get_variation_price', 'get_variation_price');
function get_variation_price() {
if ( isset($_POST['variation_id'], $_POST['quantity']) ) {
$variation_id = $_POST['variation_id'];
$quantity = $_POST['quantity'];
$variation = wc_get_product($variation_id);
$price = $variation->get_price() * $quantity;
echo wc_price($price);
}
wp_die();
}
А вот для обычного товара:
add_action('wp_footer', 'custom_product_price_script');
function custom_product_price_script() {
if ( is_product() ) {
?>
<script>
jQuery(function($) {
function updatePrice() {
var quantity = $('input[name="quantity"]').val();
$.ajax({
type: 'POST',
url: '<?php echo admin_url( 'admin-ajax.php' ); ?>',
data: {
action: 'get_product_price',
quantity: quantity
},
success: function(response) {
$('.wpr-product-price').html(response);
}
});
}
// Оновлення ціни при зміні кількості
$('input[name="quantity"]').on('input', updatePrice);
$('.fa-plus, .fa-minus').click(function() {
setTimeout(updatePrice, 1);
});
});
</script>
<?php
}
}
add_action('wp_ajax_get_product_price', 'get_product_price');
add_action('wp_ajax_nopriv_get_product_price', 'get_product_price');
function get_product_price() {
if ( isset($_POST['quantity']) ) {
$quantity = $_POST['quantity'];
$product_id = get_the_ID();
$product = wc_get_product($product_id);
$price = $product->get_price() * $quantity;
echo wc_price($price);
}
wp_die();
}