【发布时间】:2016-04-13 02:27:31
【问题描述】:
在结帐页面上,我们有一个用于美元、欧元、印度卢比、英镑货币的货币切换器。
但是,在 3 个网关中,只有 1 个网关支持所有货币,2 个支持 INR。
所以,如果有人选择美元、欧元和英镑,我需要隐藏其他两个网关
我们可以使用selected currency & 做需要的功能吗?
TIA
【问题讨论】:
标签: wordpress woocommerce payment-gateway
在结帐页面上,我们有一个用于美元、欧元、印度卢比、英镑货币的货币切换器。
但是,在 3 个网关中,只有 1 个网关支持所有货币,2 个支持 INR。
所以,如果有人选择美元、欧元和英镑,我需要隐藏其他两个网关
我们可以使用selected currency & 做需要的功能吗?
TIA
【问题讨论】:
标签: wordpress woocommerce payment-gateway
如果购物车中有特定产品,我会使用它来删除网关:
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 过滤器。
【讨论】:
WooCommerce Currency Switcher(为了避免与缓存相关的多个问题,这个设置为no-cache。它可能使用shop_currency 方法,但不确定如何确定设置了哪种货币!有什么线索吗?
好的。找到了解决办法。如果有人在这里绊倒,请在下面提供详细信息。
“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}
无需编写单独的函数即可按预期工作。希望这会有所帮助。
【讨论】:
这是工作代码,我已在 [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;
}
【讨论】: