【发布时间】:2014-09-27 23:31:14
【问题描述】:
在我的 Woocommerce 设置中,我有两个支付网关。如果购物车中有特定产品(id = 1187),我想显示gateway_2 并隐藏gateway_1。如果该产品不在购物车中,则显示“gateway_1”并隐藏gateway_2。
如果我先添加产品 1187,则以下代码有效。但是,如果我首先添加一个不是“1187”的产品,那么无论如何它都会显示gateway_1。如何修改此代码,以便无论如何,如果 ID 1187 在购物车中,则只显示gateway_2?
add_filter('woocommerce_available_payment_gateways','filter_gateways',1);
function filter_gateways($gateways){
global $woocommerce;
foreach ($woocommerce->cart->cart_contents as $key => $values ) {
//store product id's in array
$specialItem = array(1187);
if(in_array($values['product_id'],$specialItem)){
unset($gateways['gateway_1']);
break;
}
else {
unset($gateways['gateway_2']);
break;
}
}
return $gateways;
}
【问题讨论】:
标签: php wordpress woocommerce