在 Woocommerce 中使用预 select 值禁用 select 字段

Make a select field disabled with a preselected value in Woocommerce

我希望能够在城市 select 领域实现同样的目标。我希望城市像国家字段一样,只有普通文本或无法更改的给定值。

下面是我 function.php 中 woocommerce 字段状态的代码。我应该使用什么类型?

add_filter( 'woocommerce_checkout_fields', 'custom_checkout_fields', 10, 1 );
function custom_checkout_fields( $fields ) {  

    $fields['billing']['billing_city']['type'] = 'select';
    $fields['billing']['billing_city']['options'] = array('Auckland' => 'Auckland');


    return $fields;
}

您可以在结帐页面 (以及我的帐户 >地址 > 账单地址部分)

2 种不同的情况:

1) 对于 select 类型 :

add_filter( 'woocommerce_billing_fields', 'custom_checkout_billing_city_field', 10, 1 );
function custom_checkout_billing_city_field( $billing_fields ) {
    // HERE define the city
    $city = 'Auckland';

    // Set the city value (to be sure)
    WC()->customer->set_billing_city( $city );

    // Change the billing city field
    $billing_fields['billing_city']['type'] = 'select';
    $billing_fields['billing_city']['options'] = array( $city => $city );
    $billing_fields['billing_city']['default'] = $city;
    $billing_fields['billing_city']['custom_attributes']['disabled'] = 'disabled';

    return $billing_fields;
}

代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。

select 字段被禁用(只读) 预先selected 城市:


2) 对于 text 类型 :

add_filter( 'woocommerce_billing_fields', 'custom_checkout_billing_city_field', 10, 1 );
function custom_checkout_billing_city_field( $billing_fields ) {
    // HERE define the city
    $city = 'Auckland';

    // Set the city value (to be sure)
    WC()->customer->set_billing_city( $city );

    // Change the billing city field
    $billing_fields['billing_city']['default'] = $city;
    $billing_fields['billing_city']['custom_attributes']['readonly'] = 'readonly';

    return $billing_fields;
}

代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。

文本字段是只读的,预selected 城市: