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

Posted

技术标签:

【中文标题】根据 Woocommerce 中的特定城市显示货到付款 (COD)【英文标题】:Show Cash on delivery (COD) based on specific cities in Woocommerce 【发布时间】:2020-01-09 11:31:00 【问题描述】:

在 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】:

更新

以下代码将为特定定义的城市启用货到付款。

您需要使用带有in_array() php conditional function 的允许城市数组,例如:

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 文件中。经过测试并且可以工作。

【讨论】:

谢谢,只是想知道,我整合这段代码后,只有我提到的城市才会有货到付款!如果选择其他城市,客户就不会有选择COD的选项,对吗? @Anas 我对代码做了一点改动。是的,您将只为 纽约旧金山 启用 COD 支付...城市在函数的数组中定义,您可以添加任意数量的城市. 这是我一直在寻找的,非常感谢,它有效。

以上是关于根据 Woocommerce 中的特定城市显示货到付款 (COD)的主要内容,如果未能解决你的问题,请参考以下文章

根据 Woocommerce 订单状态禁用特定付款方式

根据 Woocommerce 中的运输方式和付款方式添加费用

根据 Woocommerce 中选择的付款方式禁用运输方式

在 Woocommerce 中为特定支付网关添加自定义费用

如何在 woocommerce 上制作特定的支付网关以免费送货

在 Woocommerce 结帐页面中添加城市下拉列表