如果客户的购物车总额超过500英镑,我正在尝试停用bacs网关。
我在这里有这个代码,我把它放在我的店面functions.php文件
中add_filter('woocommerce_available_payment_gateways','filter_gateways',1);
function filter_gateways($gateways){
global $woocommerce;
$min_cart_total = 500;
$cart_total = ($woocommerce->cart->get_cart_total());
$cart_total = ereg_replace("[^0-9]", "", $cart_total)/100;
if ($cart_total > $min_cart_total){
unset($gateways['bacs']);
}
return $gateways;
}
但即使我的购物车总数为250英镑,bacs的选项仍会显示在最后。
我在这里做错了吗?
答案 0 :(得分:0)
我不确定您的ereg_replace
代码,但我认为您应该确定使用稍后的优先级:
add_filter('woocommerce_available_payment_gateways','filter_gateways', 20);
function filter_gateways($gateways){
$min_cart_total = 500;
$cart_total = WC()->cart->cart_contents_total; // the total without wc_price formatting
if ($cart_total > $min_cart_total){
unset($gateways['bacs']);
}
return $gateways;
}
您的代码首先运行,Woo代码可能稍后运行,并将网关添加回可用的网关。
尚未影响任何内容,但全球$woocommerce
已被弃用,转而使用WC()
。