提问者:小点点

当数量发生变化时,WooCommerce会更新单个产品的价格


我有一个WooCommerce商店,如果数量发生变化,我需要更新产品价格。例如,如果您想以50美元的价格购买3个杯子,那么价格将在单个产品页面上自动更改为150美元,并且随着您增加数量,显示的价格将每次增加50美元。

我的商店大部分是可变产品,所以价格必须在可变产品和简单产品上更新。

下面的代码就快到了,但仍然不正确。它在可变产品上效果不太好,并且不会更新主要产品的常规价格。

add_action( 'woocommerce_single_product_summary', 'woocommerce_total_product_price', 31 );
function woocommerce_total_product_price() {
    global $woocommerce, $product;


    echo sprintf('<div id="product_total_price" style="margin-bottom:20px;display:none">%s %s</div>',__('Product Total:','woocommerce'),'<span class="price">'.$product->get_price().'</span>');
    echo sprintf('<div id="cart_total_price" style="margin-bottom:20px;display:none">%s %s</div>',__('Cart Total:','woocommerce'),'<span class="price">'.$product->get_price().'</span>');
    ?>
        <script>
            jQuery(function($){
                var price = <?php echo $product->get_price(); ?>,
                    current_cart_total = <?php echo $woocommerce->cart->cart_contents_total; ?>,
                    currency = '<?php echo get_woocommerce_currency_symbol(); ?>';

                $('[name=quantity]').change(function(){
                    if (!(this.value < 1)) {
                        var product_total = parseFloat(price * this.value),
                        cart_total = parseFloat(product_total + current_cart_total);

                        $('#product_total_price .price').html( currency + product_total.toFixed(2));
                        $('#cart_total_price .price').html( currency + cart_total.toFixed(2));
                    }
                    $('#product_total_price,#cart_total_price').toggle(!(this.value <= 1));

                });
            });
        </script>
    <?php
}

任何帮助都将不胜感激!


共1个答案

匿名用户

WooCommerce单页产品已经做到了开箱即用,你不需要做任何其他事情来让它工作,现在你正在woocommerce_single_product_summary但是你没有做任何额外的功能,所以没有必要,你添加你的额外功能并将基础基础功能留给WooCommerce来处理。