Wordpress 仅将装运限制在特定州的

Wordpress 仅将装运限制在特定州的,wordpress,woocommerce,Wordpress,Woocommerce,我想限制我的客户只运送到特定的州。实际上,我想在我的发货地址状态字段中显示特定的状态。我试过这个 function patricks_only_ship_to_continental_us( $available_methods ) { global $woocommerce; $excluded_states = array( 'AK','HI','GU','PR' ); if( !in_array( $woocommerce->customer->get

我想限制我的客户只运送到特定的州。实际上,我想在我的发货地址状态字段中显示特定的状态。我试过这个

function patricks_only_ship_to_continental_us( $available_methods ) {
    global $woocommerce;
    $excluded_states = array( 'AK','HI','GU','PR' );

    if( !in_array( $woocommerce->customer->get_shipping_state(), $excluded_states ) ) {
        // Empty the $available_methods array
        $available_methods = array();
    }

    return $available_methods;
}
add_filter( 'woocommerce_package_rates', 'patricks_only_ship_to_continental_us', 10 );
但这似乎并不像预期的那样工作,它在下订单时抛出错误消息。我不希望我的客户选择无效的运输方式

我也尝试过这些过滤器,但它们改变了发货地址和账单地址状态字段

woocommerce_states
woocommerce_countries_allowed_country_states

以下是仅允许向有限的印度州运输的示例。 将下面的代码放入function.php

add_filter( 'woocommerce_states', 'custom_woocommerce_states' );

function custom_woocommerce_states( $states ) {
    $states['IN'] = array(
        'GA' => __( 'Goa', 'woocommerce' ),
        'JK' => __( 'Jammu and Kashmir', 'woocommerce' ),
        'JH' => __( 'Jharkhand', 'woocommerce' ),
        'GJ' => __( 'Gujarat', 'woocommerce' )
     );
    return $states;
}
通过列出要启用传送的状态来修改数组列表。 您可以从woo commerce默认状态获取状态代码列表
plugins\woocommerce\i18n\states

我无法发表评论,因此我将作为答案发布,有很多插件可以通过添加搜索栏这样的功能来实现这一点,您的客户可以在其中输入邮政编码,并检查您是否在那个地方发货。它还可以限制他们在购物车中添加任何东西,如果他们还没有检查他们的邮政编码

这是我到目前为止知道的插件列表。但一切都是有报酬的


以前尝试过,但它同时改变了发货地址和账单地址字段,而我只想改变发货状态字段。为什么很难改变应该非常简单的内容。我不在乎人们从哪里付款,但我能把物品送到哪里是非常有限的。