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' ) но это не прошло, может кто подскажет, а то тема актуальна.
Можно скрыть все поля с помощью данного кода:
но он скроет для всех способов оплаты, остается только придумать как проанализировать какой метод доставки выбран ($method) в нашем случае 'local_pickup' и активировать данный код для этого метода. Пробовал ставить if( $method->id == '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; }
Для управлением полей служит хороший плагин woocommerce checkout manager (удалениие полей, снятие звездочек и тд)А как всё таки сделать поле E-mail необязательным?
Подскажите, вы решили этот вопрос?все предложенные коды и фильтры работают для ВСЕХ вариантов Доставки и для Самовывоза и для Курьера и т.п.
А задача - сделать фильтр только, когда посетитель выбирает пункт САМОВЫВОЗ.
т.е. чтобы человек не заполнял все поля.
Зачем ему заполнять, например, поле Адрес, Компания и т.п., если он сам забирает товар.
Для САМОВЫВОЗА достаточно заполнить поля: Имя, Тел.
Если сейчас применить предложенные фильтры или скрыть кодом поля, то поля скрываются для всех видов Доставки, а нужно только для САМОВЫВОЗА.
Как это можно сделать?
Спасибо.
Добрый день. Так не работает. Подскажите пожалуйста как все таки скрывать поля при самовывозе. СпасибоЯ не программист, но попробуйте такой код
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;
}}
Нет, он не имеет данный функционал, как и куча других плагинов - редакторов форм. Ни у одного плагина нет возможности изменять форму оформления заказа в зависимости от типа доставки. Ну это так, если что ) Я перепробовал:Saphali Wc Lite имеет данный функционал, ну это так если что)
Я тебе говорю есть! Вот тебе скрин!Нет, он не имеет данный функционал, как и куча других плагинов - редакторов форм. Ни у одного плагина нет возможности изменять форму оформления заказа в зависимости от типа доставки. Ну это так, если что ) Я перепробовал:
- Woo Checkout Field Editor Pro
- WooCommerce Advanced Shipping
- WooCommerce Checkout Field Editor
- WooCommerce Checkout Manager
- WooCommerce Local Pickup Plus
- Saphali Woocommerce Lite
Теперь касаемо того, что написала yaspis. Да, я в итоге примерно так и сделал, спасибо, Екатерина. Немного напрягает то, что переписывание формы происходит уже после полной загрузки страницы, то есть, на секунду появляется сначала полная форма, а затем уже перерисовывается. Но это мелочи
Как раз понадобился такой функционал. Подтверждаю, что в Saphali WC Lite такая возможность есть. На скрине выше это прекрасно видно.Нет, он не имеет данный функционал, как и куча других плагинов - редакторов форм. Ни у одного плагина нет возможности изменять форму оформления заказа в зависимости от типа доставки. Ну это так, если что ) Я перепробовал:
- Woo Checkout Field Editor Pro
- WooCommerce Advanced Shipping
- WooCommerce Checkout Field Editor
- WooCommerce Checkout Manager
- WooCommerce Local Pickup Plus
- Saphali Woocommerce Lite
Теперь касаемо того, что написала yaspis. Да, я в итоге примерно так и сделал, спасибо, Екатерина. Немного напрягает то, что переписывание формы происходит уже после полной загрузки страницы, то есть, на секунду появляется сначала полная форма, а затем уже перерисовывается. Но это мелочи
Как раз понадобился такой функционал. Подтверждаю, что в Saphali WC Lite такая возможность есть. На скрине выше это прекрасно видно.
Вы либо сговорились, либо оба плохо соображаете. На скрине выше прекрасно видно, что речь не про доставку, а про оплату. Про способы доставки в этом плагине ничего не сказано.В правом столбце выбираешь какие поля и при каких методах доставки будут действовать!
Вы либо сговорились, либо оба плохо соображаете. На скрине выше прекрасно видно, что речь не про доставку, а про оплату. Про способы доставки в этом плагине ничего не сказано.