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

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

Image CMS

EliteWars

Новичок
#21
Ты же в методах доставки в настройках woocommerce указываешь допустим , что(Пример: При самовывозе используется "Оплата наличными", а при доставке "Наложенный платеж") вот этим ты их и связываешь, а потом они уже как я показал на скрине выше взаимодействуют.
Тоесть где я выберу "Наложенный платеж" эти поля будут отображаться при выборе способа доставки "Доставка бла бла бла", там где я выбрал "Оплата наличными" эти поля будут отображаться при выборе способа доставки "Самовывоз".)
 

leksus

Новичок
#22
Да чего ты споришь) 1 +2 = 3 и 2 + 1 = 3 роль то не играет.
Что ты для "доставки способ оплаты" хотел сделать определенный, что для "оплаты сделать способ доставки" определенный.
Тебе же главное чтобы при выборе доставки у тебя отображало определенные поля для заполнения.
Ну вот и настраивай как показали, так и делается)
Ээээ, я не хочу сделать определенный вид формы для способа оплаты. Твой способ - кривой, и работает он только при двух способах оплаты и двух способах доставки. Тупо добавить еще один способ просто невозможно.

Мне нужно делать разные формы для разных способов доставки. Для самовывоза - имя и телефон, при этом покупатель может оплатить как наличкой, так и сразу онлайн. Для транспортной компании - ФИО, город, телефон и номер паспорта. Для курьерской службы - ФИО, полный адрес, телефон. Для Почты России - ФИО, полный адрес с индексом. И для всех этих способов покупателю надо предложить все способы оплаты.

Ну-ка, покажи как мне настроить этот супер-плагин, где 1+2=3 и 2+1=3 :)
 

EliteWars

Новичок
#23
Ээээ, я не хочу сделать определенный вид формы для способа оплаты. Твой способ - кривой, и работает он только при двух способах оплаты и двух способах доставки. Тупо добавить еще один способ просто невозможно.

Мне нужно делать разные формы для разных способов доставки. Для самовывоза - имя и телефон, при этом покупатель может оплатить как наличкой, так и сразу онлайн. Для транспортной компании - ФИО, город, телефон и номер паспорта. Для курьерской службы - ФИО, полный адрес, телефон. Для Почты России - ФИО, полный адрес с индексом. И для всех этих способов покупателю надо предложить все способы оплаты.

Ну-ка, покажи как мне настроить этот супер-плагин, где 1+2=3 и 2+1=3 :)
) Не ну суть осталась ведь неизменной по сути? Ты можешь просто для каждого способа оплаты (связанного с доставкой) разные поля делать нужными. Допустим: Поле город доступно для способов оплаты 1 и 2 ну и тд. ))
 

leksus

Новичок
#26
) Не ну суть осталась ведь неизменной по сути? Ты можешь просто для каждого способа оплаты (связанного с доставкой) разные поля делать нужными. Допустим: Поле город доступно для способов оплаты 1 и 2 ну и тд. ))
Я не знаю, как по-другому тебе объяснить. Твой способ - привязка способа оплаты к способу доставки. Он подходит если у тебя два способа доставки и оплаты. Либо для каждого способа доставки делать свой способ оплаты? Это вообще как? Зачем? Это же бред! Еще раз. Данным плагином нельзя управлять отображением полей для разных способов доставки. Только для разных способов оплаты. И твой способ - это некий костыль, который подходит только под один случай.

А по поводу ограничения способов доставки и оплаты другая песня надо подумать
И это не "совсем другая песня". Это - суть данного топика. Возможность менять поля при изменении способов доставки. Это основа обсуждаемой проблемы. А не "другая песня".
 

EliteWars

Новичок
#27
Я не знаю, как по-другому тебе объяснить. Твой способ - привязка способа оплаты к способу доставки. Он подходит если у тебя два способа доставки и оплаты. Либо для каждого способа доставки делать свой способ оплаты? Это вообще как? Зачем? Это же бред! Еще раз. Данным плагином нельзя управлять отображением полей для разных способов доставки. Только для разных способов оплаты. И твой способ - это некий костыль, который подходит только под один случай.


И это не "совсем другая песня". Это - суть данного топика. Возможность менять поля при изменении способов доставки. Это основа обсуждаемой проблемы. А не "другая песня".
Ладно давай искать другой способ
 

M0HAX

Новичок
#29
Тоже пришлось озадачиться... В итоге оказалось боле менее подходящим решением, это решение от yaspis . Но:

Уберем обязательность заполнения полей.
Это можно сделав переопределив необходимые вам поля в файле functions.php вашей темы:

// Хук
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
// Все $fields в этой функции будут пропущены через фильтр
function custom_override_checkout_fields( $fields ) {
$fields['billing']['billing_state_name']['required'] = false;
$fields['billing']['billing_address_1']['required'] = false;
$fields['billing']['billing_address_2']['required'] = false;
return $fields; }


... - не срабатывает(((
Точнее не срабатывают именно

$fields['billing']['billing_state_name']['required'] = false;
$fields['billing']['billing_address_1']['required'] = false;
$fields['billing']['billing_address_2']['required'] = false;


т.к. если добавить еще
unset($fields['billing']['billing_company']);

то поле с названием компании исчезает, соответственно через фильтры все проходит...
Но поля все равно считаются обязательными...
И пропускать через фильтр тоже желательно при выборе метода доставки Самовывоза (local_pickup) . Может кто-нибудь допилил уже этот скрипт?
P.S. Или, как вариант, у меня блокируется это WooChekcout - ом?
 
Последнее редактирование:

Zoten

Форумчанин
#30
Была похожая задача: сделать возможность создания доставок, с расчётом стоимости по параметру (вес) и с привязкой к зонам доставки. При этом для каждой доставки нужен был свой набор полей или селектов (для выбора ПВЗ использовали). И вишенкой на торте была реализация пошагового оформления заказа: Контактные данные -> Выбор способа доставки -> Выбор способа оплаты
Я решил так:
1) отключил все billing-поля кроме Имя, Фамилия, телефон, email, регион.
2) подключил два плагина
https://codecanyon.net/item/woocommerce-advanced-shipping/8634573 - с помощью него создавал доставки
https://shopplugins.com/plugins/extra-shipping-options-woocommerce/ - с помощью него привязывал нужные мне поля, а также селекты к доставкам

Причём второй плагин можно в теории заменить вот этим, если способов доставки не много: https://shopplugins.com/plugins/advanced-checkout-fields-woocommerce/ - там вроде можно логику работы полей задавать
 

M0HAX

Новичок
#31
Zoten Спасибо. Но загружать лишний раз плагинами тоже не айс... Вопрос то уперся всего лишь в строки вида:
$fields['billing']['billing_state_name']['required'] = false;
вот что там не так то?
 

M0HAX

Новичок
#32
P.S. Или, как вариант, у меня блокируется это WooChekcout - ом?
Как оказалось - именно так!
Хак от yaspis абсолютно рабочий! Деактивация WooChekcout все расставило на свои места!
Но хочется все-таки еще "допилить" код для functions.php ... Чтобы исполнение хака отмены обязательных полей происходило только при выборе Самовывоз (local_pickup) ....
 

Otherdude

Новичок
#33
Прикрутил к сайту скрипт (статья автора) который прячет поля. Если стоит чекбокс "Самовывоз" скрипт должен прятать поля адреса(в случае если заказывает гость вписывает в значение в поле, так как оно обязательно), а так же спрятано поле индекса до тех пор пока не выбран метод "Почта России". Индекс прячет и показывает, а вот если выбираю "Самовывоз" текст вставляет в поле, но не скрывает его. В чем может быть проблема, может кто сталкивался?
Код:
jQuery( 'body' ).on('updated_checkout', function () {//говорим, что при обновлении формы checkout надо дёрнуть нашу функцию
   var method = woocommerce_params.chosen_shipping_method;
      jQuery( 'select.shipping_method, input[name^=shipping_method][type=radio]:checked, input[name^=shipping_method][type=hidden]' ).each( function( index, input ) {
        method = jQuery( this ).val();
        } );
        switch (true) { //начинаем перебор вариантов и проверяем их
            case (method.indexOf('local_pickup:6') >= 0 ):  //если наш метод Самовывоз будем выполнять этот участок кода
                jQuery( '#billing_address_1_field, #billing_state_name_field, #billing_address_2_field, #billing_postcode_field, #billing_city_field').hide(); //Прячем адрес
                if (jQuery('#billing_address_1').val() === ''){ //если клиент не авторизован или у него нет адреса, нам что-то надо передать,т.к. поле адрес обязательное
                    jQuery('#billing_address_1').attr('value', 'Самовывоз'); //передадим туда строку "самовывоз"
                }
                break;
            case ( method.indexOf('free_shipping:15') >= 0 ): // если наш метод доставки ПОчта России
               jQuery( '#billing_address_1_field, #billing_state_name_field, #billing_address_2_field, #billing_postcode_field, #billing_city_field').show(); //Показываем все
                break;
            default: // во всех остальных случаях прячем Почтовый индекс
                jQuery('#billing_postcode_field').hide();
                jQuery( '#billing_address_1_field, #billing_address_2_field, #billing_state_name_field, #billing_city_field').show(); //Показываем всё кроме индекса   
                  }           
} );
Далее подключаю скрипт в файле функций шаблона:
Код:
add_action( 'wp_enqueue_scripts', 'hide_fields_script' );
function hide_fields_script() {
    wp_enqueue_script( 'hide_shipping_fields', get_template_directory_uri() . "/js/hide_shipping_fields.js", array( 'jquery' ), GENERATE_VERSION, true );

}
 

studnet

Новичок
#34
Добрый день! Тоже мучаюсь с настройкой доставки. Есть самовывоз и доставка в городе за 200р. Магазин работает только в одном городе. Как сделать форму оформления заказа такой, чтобы Сначала шли поля - ФИО, телефон, email, затем выбор доставки. Если выбираем самовывоз, то отображается информация, откуда можно забрать товар. Если выбираем Доставка, то отображаются поля адреса. Заранее всем спасибо. Сайт можно глянуть - http://redmiuwt.beget.tech
 
Сверху Снизу