
Написал я кусочек кода для того чтобы удалять в чекауте часть полей в зависимости от вида доставки. Но есть проблема. Мне надо после удаления полей ещё добавить именно для этого случая необязательность их заполнения. Как я могу это сделать ? вот код:
Код:
add_filter( 'woocommerce_checkout_fields', 'awoohc_override_checkout_fields' );
function awoohc_override_checkout_fields( $fields ) {
// получаем выбранные метод доставки
$chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
// проверяем текущий метод и убираем не ненужные поля
if ( 'free_shipping:119' === $chosen_methods[0] ) {
unset( $fields['billing']['billing_company'] );
unset( $fields['billing']['billing_address_2'] );
unset( $fields['billing']['billing_city'] );
unset( $fields['billing']['billing_postcode'] );
unset( $fields['billing']['billing_last_name'] );
unset( $fields['billing']['billing_country'] );
unset( $fields['billing']['billing_3_name'] );
}
if ( 'local_pickup:118' === $chosen_methods[0] ) {
unset( $fields['billing']['billing_company'] );
unset( $fields['billing']['billing_address_1'] );
unset( $fields['billing']['billing_address_2'] );
unset( $fields['billing']['billing_city'] );
unset( $fields['billing']['billing_postcode'] );
unset( $fields['billing']['billing_country'] );
unset( $fields['billing']['billing_last_name'] );
unset( $fields['billing']['billing_3_name'] );
}
return $fields;
}