Сделать раскрывающийся список стран оформления заказа в Woocommerce

Я хочу, чтобы выпадающий список стран на woocommerce был доступен только для чтения. Изображение страны

Я уже установил в качестве страны по умолчанию Австралию, но хочу, чтобы они были доступны только для чтения.

1

Решение

Ответ Кашало правильный … Вы также можете использовать один из следующих нескольких способов:

1) Только для страны оплаты заказа:

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) Для оформления заказа и оплаты в моем аккаунте и в стране доставки:

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

Другие решения

ты можешь использовать 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" к значению кода вашей страны, и все будет работать, как ожидалось.

Выход :

введите описание изображения здесь

Код протестирован с темой StorrFront.

2

По вопросам рекламы [email protected]