Есть ли способ удалить необходимую звездочку из поля оплаты на странице оформления заказа в php? У меня есть следующий код, который не работает.
add_filter( 'woocommerce_checkout_fields' , 'customize_fields' );
function customize_fields( $fields ) {
$fields['billing']['billing_address_2']['required'] = false;
return $fields;
}
Есть два фильтра для управления полями оформления заказа. Ты можешь использовать 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. Этот фильтр применяется ко всем полям выставления счетов и доставки по умолчанию.»
Вероятно, это было бы проще сделать с помощью 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;
}
Вы должны добавить следующий код в ваш файл 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 */