在结帐页面上,我们为美元,欧元,英镑,英镑货币提供货币换算服务。
然而,在3个中,只有1个网关支持所有货币,& 2支持INR。
所以,我需要隐藏其他两个网关,如果有人选择USD,EUR& GBP
我们可以使用selected currency
&做所需的功能?
TIA
答案 0 :(得分:1)
如果购物车中有特定产品,我会用它来删除网关:
add_filter('woocommerce_available_payment_gateways','filter_gateways',1);
function filter_gateways($gateways){
global $woocommerce;
foreach ($woocommerce->cart->cart_contents as $key => $values ) {
$product_ = array(1063);
if(in_array($values['product_id'],$product_)){
unset($gateways['paypal']);
break;
}}
return $gateways;
}
我不知道您的货币切换器是什么来获取任何变量来修改woocommerce_available_payment_gateways过滤器。
答案 1 :(得分:0)
好。找到了解决方案。如果有人在这里绊倒,请在下面提供详细信息。
“WooCommerce Currency Switcher”插件更改了shop currency
&使用会话/瞬态方法的商店。不仅如此,它还为每个选定的货币添加了一个正文类。
例如: currency-usd
或currency-eur
或currency-gbp
这是可以简单地使用CSS
.currency-usd .payment_method_instamojo, .currency-usd .payment_method_paynimo, .currency-eur .payment_method_instamojo, .currency-eur .payment_method_paynimo, .currency-gbp .payment_method_instamojo, .currency-gbp .payment_method_paynimo {display:none}
这可以按预期工作,无需编写单独的函数。希望这会有所帮助。
答案 2 :(得分:0)
这是有效的代码,我已经在[www.edupediapublications.org] [1]上实现了它
add_filter('woocommerce_available_payment_gateways', 'woocs_filter_gateways', 1);
function woocs_filter_gateways($gateway_list)
{
global $WOOCS;
$exclude = array(
'paypal' => array('EUR', 'GBP'), //do not show paypal gate if current currency is EUR or GBP
'stripe' => array('USD')//do not show stripe gate if current currency is USD
);
//***
foreach ($exclude as $gateway_key => $currencies)
{
if (isset($gateway_list[$gateway_key]) AND in_array($WOOCS->current_currency, $currencies))
{
unset($gateway_list[$gateway_key]);
}
}
return $gateway_list;
}