WooCommerce 根据网站语言显示不同支付方式

每个国家、地区使用的语言不一样,可以使用的在线支付方式也有很大概率是不一样的。在开发多语言站点的时候,我们经常需要针对不同国家的用户设置不用的支付方法。

使用插件根据用户所在国家设置不同的支付方法 #

用户所在的地区不同,可用的支付方法往往也不一样,比如在中国,大多数用户可以使用支付宝、微信、银联等支付方法。用户在美国,可以使用 PayPal、Stripe 等支付方法。

有一个名为 Country Based Payments 的插件可以帮助我们实现这个需求,直接安装插件,然后按照插件说明设置就可以了,在这里就不多说了。

https://wordpress.org/plugins/woocommerce-country-based-payments/

根据 Polylang 语言显示每种语言对应的支付方式 #

因为用户可用的支付方法往往和他们使用的语言是高度相关的,我们就可以直接根据用户语言来设置用户可以使用的支付方式。

下面的代码中,我们根据获取到的 Polylang 语言,来禁用掉该语言用户不能使用的支付方法,从而达到这个目的。


add_filter('woocommerce_available_payment_gateways', function ($_available_gateways)
{
    switch (pll_current_language()) {
        case 'zh-hk':
            unset($_available_gateways['wc_alipy']);
            break;
        case 'zh':
            unset($_available_gateways['paypal']);
            break;
        default:
            unset($_available_gateways['wc_alipay']);
    }

    return $_available_gateways;
});

实现上面的功能主要用到了 WooCommerce 的 woocommerce_available_payment_gateways Filter,基于以上原理,我们还可以根据其他条件来设置用户可用的支付方法,比如订单金额,是否使用优惠等等。