今天我们来看看 WooCommerce Checkout 页面,特别是在选择特定的运送方式时如何禁用支付网关。请享用!

WooCommerce:禁用特定运送方式的付款网关

WooCommerce 2.6+

/**
 * @snippet       Disable Payment Gateway For Specific Shipping Method

 * @sourcecode    https://businessbloomer.com/?p=19867
 * @author        Rodolfo Melogli
 * @testedwith    WooCommerce 3.1.1
 */

// Disable 'cod' gateway for 'local_pickup' shipping method

function bbloomer_gateway_disable_shipping_30( $available_gateways ) {
global $woocommerce;
$chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
$chosen_shipping = $chosen_methods[0];
if ( isset( $available_gateways['cod'] ) && 0 === strpos( $chosen_shipping, 'local_pickup' ) ) {
unset( $available_gateways['cod'] );
}
return $available_gateways;
}

add_filter( 'woocommerce_available_payment_gateways', 'bbloomer_gateway_disable_shipping_30' );

WooCommerce 低于 2.6

/**
 * @snippet       Disable Payment Gateway For Specific Shipping Method

 * @sourcecode    https://businessbloomer.com/?p=19867
 * @author        Rodolfo Melogli
 * @testedwith    WooCommerce 2.5.2
 */

// Disable 'cod' gateway for 'local_delivery' shipping method

function bbloomer_gateway_disable_shipping( $available_gateways ) {
global $woocommerce;
$chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
$chosen_shipping = $chosen_methods[0];
if ( isset( $available_gateways['cod'] ) && $chosen_shipping == 'local_delivery' ) {
unset( $available_gateways['cod'] );
}
return $available_gateways;
}

add_filter( 'woocommerce_available_payment_gateways', 'bbloomer_gateway_disable_shipping' );


可以在哪里添加此代码?

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


这段代码是否正常可用?

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


需要关于 WooCommerce 的帮助?

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