Скрыть поля проверки Woocommerce условно и сделать их необязательными - PullRequest
0 голосов
/ 25 января 2019

Я условно удалил поля адреса выставления счета на странице оформления заказа в woocommerce, но при отправке заказа на размещение woocommerce выдает ошибку:

Пожалуйста, введите адрес, чтобы продолжить.

Затем я попытался добавить фильтр в поля woocommerce_default_address_fields, чтобы сделать поля необязательными, что, кажется, работает, только если поля не сброшены.

    // make address fields optional - this works fine without the next filter
    add_filter( 'woocommerce_default_address_fields' , 'filter_default_address_fields', 20, 1 );
    function filter_default_address_fields( $address_fields ) {
       // Only on checkout page
       if( ! is_checkout() ) return $address_fields;

       // All field keys in this array
       $fields = array('country','company','address_1','address_2','city','state','postcode');

       // Loop through each address fields (billing and shipping)
       foreach( $fields as $key_field )
           $address_fields[$key_field]['required'] = false;

       return $address_fields;
    }

    //conditionally unset fields
    add_filter( 'woocommerce_checkout_fields' , 'simplify_checkout' );

    function simplify_checkout( $fields ) {

       $customField = false;
       foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
           // Check if cart item has attribute
           if (  ! empty ($cart_item['custom_attribute']) ) $registry = true;
       }
       if( $customField ) {
           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_state']);
       }
       return $fields;
    }

Я надеюсь, что все еще смогу условно скрывать / сбрасывать поля вместе с успешной отправкой заказа.

1 Ответ

0 голосов
/ 26 января 2019

У меня была эта проблема с сообщением проверки два дня назад. Я продаю только одной стране, поэтому я создал следующий обходной путь. Возможно, если у вас будет меньше стран для продажи, это может сработать и для вас:

  1. Раскомментировать / Удалить
    unset($fields['billing']['billing_country']);
  2. Перейдите на WooCommerce -> Настройки -> Продать в определенные страны и введите ваши страны.
  3. Теперь сообщение проверки неактивно, так как поле Страна обязательный. Вы можете удалить его сейчас с помощью CSS.

    #billing_country_field { display: none; }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...