【问题标题】:Restrict checkout shipping state in Woocommerce限制 Woocommerce 中的结帐运输状态
【发布时间】:2019-05-27 15:45:24
【问题描述】:

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

我已尝试搜索该选项是否已更改或已弃用,但我无法找到它或其他方式。我也尝试了一些我在这里找到的其他代码,但也没有用。

 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;
}

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

【问题讨论】:

    标签: php wordpress woocommerce state checkout


    【解决方案1】:

    以下将设置默认的预定义送货国家和州,将送货状态选择字段显示为禁用(只读),并选择“Kentucky”值:

    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 文件中。经过测试和工作。

    【讨论】:

    • 这似乎有效,但如果我删除禁用的选项,我可以看到所有其他状态。在 3.5.8 中,唯一会出现的州是肯塔基州。
    • @Howli 无法仅在上一个 WooCommerce 版本的运输中删除状态……这只能通过计费和运输的其他钩子来完成。现在重要的是运输状态始终是肯塔基州,这就是这段代码的作用。
    • 我刚刚使用 3.5.8 测试了该代码,它确实删除了下拉列表中除 Kentucky 之外的所有状态。有可能,但现在不行了
    • @Howli 自 WooCommerce 3.6+ 起不再存在
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    相关资源
    最近更新 更多