为了账号安全,请及时绑定邮箱和手机立即绑定

根据 Woocommerce 中的特定城市显示货到付款 (COD)

根据 Woocommerce 中的特定城市显示货到付款 (COD)

PHP
开心每一天1111 2022-01-02 18:17:04
在 Woocommerce 中,我使用以下代码显示仅针对特定城市的货到付款付款方式:function payment_gateway_disable_city( $available_gateways ) {    global $woocommerce;    if ( isset( $available_gateways['cod'] ) && $woocommerce->customer->get_shipping_city() == 'New York') {        unset( $available_gateways['cod'] );    }     return $available_gateways;}add_filter( 'woocommerce_available_payment_gateways', 'payment_gateway_disable_city' );它工作正常。现在我需要处理多个城市,如华盛顿、旧金山等......所以我尝试了以下方法:function payment_gateway_disable_city( $available_gateways ) {    global $woocommerce;    if ( isset( $available_gateways['cod'] ) && $woocommerce->customer->get_shipping_city() == 'New York', 'San Fransisco' ) {        unset( $available_gateways['cod'] );    }     return $available_gateways;}add_filter( 'woocommerce_available_payment_gateways', 'payment_gateway_disable_city' );但它不起作用……我收到“WordPress 遇到技术问题”的提示。
查看完整描述

1 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

更新


以下代码将为特定定义的城市启用 COD 支付。


您需要使用in_array()PHP 条件函数允许的城市数组,例如:


add_filter( 'woocommerce_available_payment_gateways', 'cities_based_payment_gateway_cod' );

function cities_based_payment_gateway_cod( $available_gateways ) {

    if ( is_admin() ) return $available_gateways; // Only on frontend


    // HERE define the allowed cities in this array 

    $cities = array( 'New York', 'San Francisco' );


    if ( isset( $available_gateways['cod'] ) && ! in_array( WC()->customer->get_shipping_city(), $cities ) ) {

        unset( $available_gateways['cod'] );

    } 

    return $available_gateways;

}

代码位于活动子主题(或活动主题)的 functions.php 文件中。测试和工作。


查看完整回答
反对 回复 2022-01-02
  • 1 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信