根据所选货币隐藏Woocommerce中的付款方式

时间:2016-01-08 11:51:11

标签: wordpress woocommerce payment-gateway

在结帐页面上,我们为美元,欧元,英镑,英镑货币提供货币换算服务。

然而,在3个中,只有1个网关支持所有货币,& 2支持INR。

所以,我需要隐藏其他两个网关,如果有人选择USD,EUR& GBP

我们可以使用selected currency&做所需的功能?

TIA

3 个答案:

答案 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-usdcurrency-eurcurrency-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;
}