我有一个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
}
任何帮助都将不胜感激!
WooCommerce单页产品已经做到了开箱即用,你不需要做任何其他事情来让它工作,现在你正在woocommerce_single_product_summary但是你没有做任何额外的功能,所以没有必要,你添加你的额外功能并将基础基础功能留给WooCommerce来处理。