Woocommerce удалите звездочку из обязательных полей на странице оформления заказа

Есть ли способ удалить необходимую звездочку из поля оплаты на странице оформления заказа в php? У меня есть следующий код, который не работает.

add_filter( 'woocommerce_checkout_fields' , 'customize_fields' );

function customize_fields( $fields ) {
$fields['billing']['billing_address_2']['required'] = false;

return $fields;
}

1

Решение

Есть два фильтра для управления полями оформления заказа. Ты можешь использовать woocommerce_checkout_fields Фильтр, чтобы сделать поле «не обязательным», но красная звездочка не будет удалена.

При работе с полями адреса по умолчанию с woocommerce_checkout_fields фильтр, некоторые ваши изменения не вступят в силу, потому что woocommerce_default_address_fields фильтр и его значения по умолчанию могут отменить ваши изменения.

Только частично функциональный код:

function custom_override_checkout_fields( $fields ) {
$fields['billing']['billing_address_1']['required'] = false ;
return $fields;
}
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );

Поле адреса (# 1) больше не требуется, но все еще имеет красную звездочку.

Полностью функциональный код:

function custom_override_default_address_fields( $address_fields ) {
$address_fields['address_1'][ 'required' ] = false;
return $address_fields;
}
add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_address_fields' );

Теперь это поле не является обязательным, и красная звездочка исчезла.

Документация говорит тот «В некоторых конкретных случаях вам нужно будет использовать фильтр woocommerce_default_address_fields. Этот фильтр применяется ко всем полям выставления счетов и доставки по умолчанию.»

2

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

Вероятно, это было бы проще сделать с помощью CSS, и было бы чище и лучше для программ чтения с экрана:

 .woocommerce-checkout abbr.required {
display: none;
}

.woocommerce-checkout это класс тела, который добавляется только на страницу оформления заказа, поэтому он не влияет на другие страницы woo, которые могут иметь .required класс в abbr элемент.

Чтобы сделать поле не обязательным для функции:

// Hook in
add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_address_fields' );

// Our hooked in function - $address_fields is passed via the filter!
function custom_override_default_address_fields( $address_fields ) {
$address_fields['address_2']['required'] = false;

return $address_fields;
}
1

Вы должны добавить следующий код в ваш файл functions.php. Пример ниже для почтового индекса:

 /* Seteaza campul Cod postal ne-obligatoriu */
add_filter( 'woocommerce_billing_fields', 'wc_npr_filter_postcode', 10, 1 );
function wc_npr_filter_postcode( $address_fields ) {
$address_fields['billing_postcode']['required'] = false;
return $address_fields;
}
/* End - Seteaza campul Cod postal ne-obligatoriu  */
0