Я хочу, чтобы выпадающий список стран на woocommerce был доступен только для чтения.
Я уже установил в качестве страны по умолчанию Австралию, но хочу, чтобы они были доступны только для чтения.
Ответ Кашало правильный … Вы также можете использовать один из следующих нескольких способов:
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;
}
ты можешь использовать 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.