我有一小部分代码可以计算购物车总额(不含税),并且如果购物车总额低于50美元,则输出免费送货加售。
// Shipping Upsell
/**
* Checks the cart for the Total excluding taxes
* @param $total_required
* @return bool
*/
function qualifies_basedon_cart_total( $total_required ) {
/*
* We only want to run this on the cart or checkout page
* If the cart subtotal is less than $total_required for free shipping, return true
*/
if( is_cart() || is_checkout () ) {
if( WC()->cart->subtotal_ex_tax < $total_required ) {
return true;
}
}
// do nothing
return false;
}
function shipup(){
// tests if total is below $50 and displays upsell if query returns ture
if( qualifies_basedon_cart_total( 50 ) ) {
echo "<div class =\"shipup\"><h3>Free Shipping</h3>\n<p>Get free shipping on all orders over $50!</p></div>";
}
}
add_action ('woocommerce_cart_collaterals','shipup', 1);
上面的代码在初始页面加载时效果很好,但是在更改购物车页面上的数量并选择“更新购物车”后,我上面的代码(在functions.php中)不会根据新的购物车总数自行调整。
我相信更新购物车按钮使用AJAX,我的代码无法使用它。如何根据动态购物车总数AJAXIFY我的代码?
答案 0 :(得分:1)
<?php
/* Update cart total on quantity change */
function cart_select_change_js() {
?>
<script type="text/javascript">
jQuery(document).ready(function($){
$(".product-quantity .quantity_select select.qty").change(function(){
$("section.entry .woocommerce").append('<div style="display:none" class="blockUI"></div>');
$("section.entry .woocommerce").append('<div style="z-index: 1000; border: medium none; margin: 0px; padding: 0px; width: 100%; height: 100%; top: 0px; left: 0px; background: url("/wp-content/plugins/woocommerce/assets/images/ajax-loader@2x.gif") no-repeat scroll center center / 16px 16px rgb(255, 255, 255); opacity: 0.6; cursor: wait; position: absolute;" class="blockUI blockOverlay"></div>');
$(".actions input.button").click();
});
});
</script>
<?php
}
add_action('woocommerce_after_cart', 'cart_select_change_js', 10);
?>
试试此代码段
答案 1 :(得分:0)
如果您正在使用WooCommerce 2.6及更高版本,WC已经创建了一种方法,无需额外的代码即可。
您需要设置&#34; Shipping Zones&#34;在&#34; WooCommerce&#34; - &GT; &#34;设置&#34; - &GT; &#34;送货&#34; - &GT; &#34;运输区&#34;。
例如,我有&#34;本地&#34;和#34;美国&#34;运输区。
现在购物车的总价为50美元或以上,即可免费送货。