您可能要禁用非本地人的 PayPal,或仅为特定国家启用特定网关。对于国际贸易的所有人来说,这是一个非常普遍的要求。

如何在 WooCommerce 中找到 Gateway ID

如何禁用/启用特定国家/地区的特定网关

  • 决定要禁用/启用的支付网关,例如 “paypal”,“授权”,“条纹” 等。
  • 确定国家代码,例如美国,ES,IE 等
  • 打开 WordPress 仪表板/外观/ Editor / functions.php 文件
  • 添加以下代码行:
/**
 * @snippet       WooCommerce Disable Payment Gateway for a Specific Country

 * @sourcecode    https://businessbloomer.com/?p=164
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 2.4.7
 */

function payment_gateway_disable_country( $available_gateways ) {
global $woocommerce;
if ( isset( $available_gateways['authorize'] ) && $woocommerce->customer->get_country() <> 'US' ) {
unset( $available_gateways['authorize'] );
} else if ( isset( $available_gateways['paypal'] ) && $woocommerce->customer->get_country() == 'US' ) {
unset( $available_gateways['paypal'] );
}
return $available_gateways;
}

add_filter( 'woocommerce_available_payment_gateways', 'payment_gateway_disable_country' );

功能细节

给出上面的例子,这里是您需要更改以使其工作的所有内容:

1)为您的函数决定一个名字,以便您知道这个函数是什么。在我的例子中,我调用函数 “payment_gateway_disable_country”,因为它是一个翻译 “Leave a Reply” 字符串的函数。确保此名称出现在第 1 行

2)在第一个 “if” 声明中,我决定在美国境外取消 “授权” 付款。您需要做的是在此输入付款名称:

  • if(isset($ available_gateways [‘authorize’])
  • unset($ available_gateways [‘authorize’]);

… 和国家代码在这里:

  • && $ woocommerce-> customer-> get_country()<>’US’

3)在 “else if” 语句中,如果该国是美国,我决定停用 PayPal 。根据 2 输入相同的信息)

4)保存您的 functions.php,并在您的结帐页面进行一些测试!

而已!


可以在哪里添加此代码?

您可以将 PHP 代码片段放置在主题或子主题的 functions.php 文件的底部(如果是 CSS 代码,请添加到主题的 style.css 文件底部),修改之前建议先备份原始文件,若出现错误请先删除此代码。


这段代码是否正常可用?

或者是您有更好的解决方案想要分享?请到薇晓朵 WooCommerce 中文论坛留言告知,我们希望可以帮到更多国内的 WooCommerce 用户也希望您的参与。


需要关于 WooCommerce 的帮助?

请观看我们提供的免费视频教程或到薇晓朵 WooCommerce 中文论坛提问,会有专业技术团队提供相关帮助。