• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Изменения обязательности заполнения полей в checkout

dyx476

Новичок
Написал я кусочек кода для того чтобы удалять в чекауте часть полей в зависимости от вида доставки. Но есть проблема. Мне надо после удаления полей ещё добавить именно для этого случая необязательность их заполнения. Как я могу это сделать ? вот код:

Код:
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;
}
 

ADv

Гуру
Местный
Написал я кусочек кода для того чтобы удалять в чекауте часть полей в зависимости от вида доставки. Но есть проблема. Мне надо после удаления полей ещё добавить именно для этого случая необязательность их заполнения. Как я могу это сделать ? вот код:

Код:
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;
}
Как то так
PHP:
$fields['billing_first_name']['required'] = false;
 
  • Like
Реакции: D&B
Сверху Снизу