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

时间:2019-09-06 15:06:16

标签: php wordpress woocommerce payment-gateway checkout

在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 个答案:

答案 0 :(得分:1)

已更新

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

您需要使用in_array() PHP conditional function这样的允许城市阵列:

add_filter( 'woocommerce_available_payment_gateways', 'cities_based_payment_gateway_cod' );
function cities_based_payment_gateway_cod( $available_gateways ) {
    // 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;
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。