如果价格超过500,则禁用BACS支付网关

时间:2015-11-17 15:05:12

标签: php wordpress woocommerce payment-gateway

如果客户的购物车总额超过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的选项仍会显示在最后。

我在这里做错了吗?

1 个答案:

答案 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()