限制Woocommerce中的结帐运送状态

时间:2019-05-27 15:45:25

标签: php wordpress woocommerce state checkout

在运送到美国时,我试图将运送地址限制在一个州(肯塔基州),下面的代码在WooCommerce 3.5.8上有效,但是一旦更新WooCommerce,它就会停止工作。我尝试了不同的增量(3.6.0 beta,rc1等),并且3.5.8之后的所有内容都会导致其停止工作(它显示的是所有州而不仅仅是肯塔基州)。

我尝试搜索该选项是否已更改或已弃用,但我找不到它或执行此操作的另一种方法。我也尝试过在这里找到的其他一些代码,但这也不起作用。

 add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );

function custom_override_checkout_fields( $fields ) 
{
    $fields['shipping']['shipping_state']['options'] = array('KY' => 'Kentucky' );

    return $fields;
}

以上是否有问题或我需要进行一些更改?

1 个答案:

答案 0 :(得分:1)

以下内容将设置默认的预定义运输国家和州,将运输状态选择字段显示为已禁用(只读),并选择“肯塔基州”值:

add_filter( 'woocommerce_shipping_fields' , 'custom_shipping_state_fields', 100, 1 );
function custom_shipping_state_fields( $fields ) {
    WC()->customer->set_shipping_country('US'); // Set shipping country
    WC()->customer->set_shipping_state('KY'); // Set shipping state

    $fields['shipping_state']['type'] = 'select';
    $fields['shipping_state']['options'] = ['KY' => __('Kentucky', 'WooCommerce')];
    $fields['shipping_state']['default'] = 'KY';
    $fields['shipping_state']['input_class'] = [];
    $fields['shipping_state']['custom_attributes'] = ['disabled' => 'disabled'];

    return $fields;
}

代码进入活动子主题(或活动主题)的functions.php文件中。经过测试和工作。