在Woocommerce中只读取结帐国家/地区下拉列表

问题描述 投票:2回答:2

我希望国家下载woocommerce作为readonly。 Country Image

我已经将默认国家/地区设置为澳大利亚,但我希望它们是只读的。

php woocommerce checkout readonly country
2个回答
3
投票

Kashalo的答案是正确的......您还可以使用以下多种方式之一:

1)仅适用于Checkout Billing国家/地区:

add_filter('woocommerce_checkout_fields', 'readdonly_billing_country_select_field');
function readdonly_country_select_field( $fields ) {
    // Set billing and shipping country to AU
    WC()->customer->set_billing_country('AU');
    // Make billing country field read only
    $fields['billing']['billing_country']['custom_attributes'] = array( 'disabled' => 'disabled' );

    return $fields;
}

2)仅限结帐和我的帐户结算国家/地区:

add_filter('woocommerce_billing_fields', 'readdonly_billing_country_select_field');
function readdonly_country_select_field( $fields ) {
    // Set billing and shipping country to AU
    WC()->customer->set_billing_country('AU');
    // Make billing country field read only
    $fields['billing_country']['custom_attributes'] = array( 'disabled' => 'disabled' );

    return $fields;
}

3对于结帐帐单和送货国家/地区:

add_filter('woocommerce_checkout_fields', 'readdonly_billing_country_select_field');
function readdonly_country_select_field( $fields ) {
    // Set billing and shipping country to AU
    WC()->customer->set_billing_country('AU');
    WC()->customer->set_shipping_country('AU');
    // Make billing and shipping country field read only
    $fields['billing']['billing_country']['custom_attributes'] = array( 'disabled' => 'disabled' );
    $fields['shipping']['shipping_country']['custom_attributes'] = array( 'disabled' => 'disabled' );

    return $fields;
}

4)对于Checkout和我的帐户结算和运送国家/地区:

add_filter('woocommerce_default_address_fields', 'readdonly_country_select_field');
function readdonly_country_select_field( $fields ) {
    // Set billing and shipping country to AU
    WC()->customer->set_billing_country('AU');
    WC()->customer->set_shipping_country('AU');
    // Make country field read only
    $fields['country']['custom_attributes'] = array( 'disabled' => 'disabled' );

    return $fields;
}

2
投票

您可以使用woocommerce_form_field_args将禁用的属性添加到quntry选择字段。

将以下代码添加到functions.php中,您将获得所需的结果。

add_action('woocommerce_form_field_args', 'disable_country_dropdown', 10, 3);


function disable_country_dropdown($args, $key, $value)
{
    if ($key == 'billing_country') {
        $args['custom_attributes'] = [
            'disabled' => 'disabled',
        ];
    }
    return $args;
}

当我们选择禁用选择drowpdown时,当您单击下订单时未通过选项值的问题,为了解决此问题,我们可以添加具有所需值的隐藏字段,如下所示:

add_action('woocommerce_after_order_notes', 'billing_country_hidden_field');

function billing_country_hidden_field($checkout)
{

    echo '<input type="hidden" class="input-hidden" name="billing_country"  value="PL">';

}

只需将value="PL"更改为您的国家/地区代码值,一切都将按预期工作。

OutPut:

enter image description here

代码使用StoreFront主题进行测试。

© www.soinside.com 2019 - 2024. All rights reserved.