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

Как избавится от заполнения всех полей при Самовывозе?

Тема в разделе "Вопросы новичков", создана пользователем vas555vas, 22 авг 2014.

  1. vas555vas

    vas555vas

    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    Вопрос:
    ******
    А еще, столкнулся с таким неприятным моментом как необходимость заполнения всех полей при самовывозе.

    Я хочу от этого избавиться, вопрос - как этого добиться?

    Чтобы посетитель сайта, выбирая Доставка -> САМОВЫВОЗ, не заполнял поля адрес, имя и т.п.

    Спасибо.
     
  2. galiulinr

    galiulinr Местный

    Сообщения:
    181
    Симпатии:
    56
    Баллы:
    28
    Можно скрыть все поля с помощью данного кода:
    Код:
    add_filter ('woocommerce_checkout_fields', 'remove_fields_local');
    function remove_fields_local($fields, $available_methods){
        unset($fields['billing']['billing_first_name']);
        unset($fields['billing']['billing_last_name']);
        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']);
        unset($fields['billing']['billing_phone']);
        unset($fields['order']['order_comments']);
        unset($fields['billing']['billing_address_2']);
        unset($fields['billing']['billing_postcode']);
        unset($fields['billing']['billing_company']);
        unset($fields['billing']['billing_last_name']);
        unset($fields['billing']['billing_email']);
        unset($fields['billing']['billing_city']);   
        return $fields;
    }
    но он скроет для всех способов оплаты, остается только придумать как проанализировать какой метод доставки выбран ($method) в нашем случае 'local_pickup' и активировать данный код для этого метода. Пробовал ставить if( $method->id == 'local_pickup' ) но это не прошло, может кто подскажет, а то тема актуальна.
     
  3. Stork.71

    Stork.71 Местный

    Сообщения:
    1.046
    Симпатии:
    255
    Баллы:
    83
    А если попробовать действовать аналогичным способом, но не скрывать поля, а делать их необязательными?
     
  4. vas555vas

    vas555vas

    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1

    В какой папке этот код располагается?
     
  5. kvo

    kvo

    Сообщения:
    59
    Симпатии:
    6
    Баллы:
    8
    А как всё таки сделать поле E-mail необязательным? :)
     
  6. redjek

    redjek Местный

    Сообщения:
    155
    Симпатии:
    36
    Баллы:
    28
    Для управлением полей служит хороший плагин woocommerce checkout manager (удалениие полей, снятие звездочек и тд)
    http://wordpress.org/plugins/woocommerce-checkout-manager/
     
  7. galiulinr

    galiulinr Местный

    Сообщения:
    181
    Симпатии:
    56
    Баллы:
    28
    Это надо вставить в функцию темы файл functions.php
     
  8. vas555vas

    vas555vas

    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    все предложенные коды и фильтры работают для ВСЕХ вариантов Доставки и для Самовывоза и для Курьера и т.п.
    А задача - сделать фильтр только, когда посетитель выбирает пункт САМОВЫВОЗ.
    т.е. чтобы человек не заполнял все поля.
    Зачем ему заполнять, например, поле Адрес, Компания и т.п., если он сам забирает товар.
    Для САМОВЫВОЗА достаточно заполнить поля: Имя, Тел.

    Если сейчас применить предложенные фильтры или скрыть кодом поля, то поля скрываются для всех видов Доставки, а нужно только для САМОВЫВОЗА.

    Как это можно сделать?
    Спасибо.
     
  9. ni4egonet

    ni4egonet

    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Подскажите, вы решили этот вопрос?
    Сейчас над этим же мудрю)
     
  10. sergori

    sergori

    Сообщения:
    24
    Симпатии:
    9
    Баллы:
    3
    Я не программист, но попробуйте такой код
    if ($WC_Shipping_Method == local_pickup) {
    add_filter ('woocommerce_checkout_fields', 'remove_fields_local');
    function remove_fields_local($fields, $available_methods){
    unset($fields['billing']['billing_first_name']);
    unset($fields['billing']['billing_last_name']);
    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']);
    unset($fields['billing']['billing_phone']);
    unset($fields['order']['order_comments']);
    unset($fields['billing']['billing_address_2']);
    unset($fields['billing']['billing_postcode']);
    unset($fields['billing']['billing_company']);
    unset($fields['billing']['billing_last_name']);
    unset($fields['billing']['billing_email']);
    unset($fields['billing']['billing_city']);
    return $fields;
    }}