[英]Auto add a variable quantity of specific product based on WooCommerce cart subtotal
[英]Display product total and cart subtotal on quantity change in WooCommerce product page
這個想法很簡單。 在WooCommerce產品頁面,隨着客戶數量的變化,顯示產品總價(漲價或降價)和購物車小計。
我現在被困住了。 即使打開調試,我也沒有收到任何錯誤。 產品頁面上沒有顯示任何內容。
add_action( 'woocommerce_after_add_to_cart_form', 'total_product_and_subotal_price' );
function total_product_and_subotal_price() {
global $product;
// the div section
echo sprintf('',__('Product Total:','woocommerce'),''.$product->get_price().'');
echo sprintf('',__('Cart Total:','woocommerce'),''.$product->get_price().'');
?>
<script>
jQuery(function($){
var price = get_price(); ?>,
current_cart_total = cart->cart_contents_total; ?>,
currency = '';
$('[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
}
您的代碼中有一些錯誤,請嘗試以下將動態顯示的錯誤:
基於你的代碼:
add_action( 'woocommerce_after_add_to_cart_form', 'total_product_and_subotal_price' );
function total_product_and_subotal_price() {
global $product;
$product_price = (float) wc_get_price_to_display( $product );
$cart_subtotal = (float) WC()->cart->subtotal + $product_price;
$price_0_html = wc_price( 0 ); // WooCommmerce formatted zero price (formatted model)
$price_html = '<span class="amount">'.number_format($product_price, 2, ',', ' ').'</span>';
$subtotal_html = '<span class="amount">'.number_format($cart_subtotal, 2, ',', ' ').'</span>';
// Display formatted product price total and cart subtotal amounts
printf('<div id="totals-section"><p class="product-total">%s</p><p class="cart-subtotal">%s</p></div>',
str_replace([' amount','0,00'], ['',$price_html], $price_0_html), // formatted html product price
str_replace([' amount','0,00'], ['',$subtotal_html], $price_0_html) // Formatted html cart subtotal
);
?>
<script>
jQuery( function($){
var productPrice = <?php echo $product_price; ?>,
startCartSubtotal = <?php echo $cart_subtotal; ?>;
function formatNumber( floatNumber ) {
return floatNumber.toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ' ').replace('.', ',');
}
$('input[name=quantity]').on( 'input change', function(){
var productQty = $(this).val() == '' ? 1 : $(this).val(),
productTotal = parseFloat(productPrice * productQty),
cartSubtotal = productTotal + startCartSubtotal - productPrice;
cartSubtotal = $(this).val() > 1 ? parseFloat(cartSubtotal) : parseFloat(startCartSubtotal);
$('#totals-section > .product-total .amount').html( formatNumber(productTotal) );
$('#totals-section > .cart-subtotal .amount').html( formatNumber(cartSubtotal) );
});
});
</script>
<?php
}
代碼進入您的活動子主題(或活動主題)的functions.php 文件。 測試和工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.