Z lekcji wcześniejszych już wiemy jak ukryć niepotrzebne pola i jak nadać im priorytet wyświetlania. Teraz możemy poruszyć temat tak zwanej LOGIKI WARUNKÓW WYŚWIETLANIA. Docelowo wszystkie pola kasy takie jak adres, kod pocztowy czy miasto są widoczne. I w przypadku sprzedaży produktów fizycznych są one jak najbardziej potrzebne. Ale co w momencie kiedy sprzedajemy produkty cyfrowe ? Tak naprawdę potrzebujemy tylko Imię i nazwisko klienta oraz email. Więc w tym przypadku wykorzystali byśmy kod, który umożliwi nam ukrycie zbędnych pól. I wszystko fajnie, ale nasuwa się jeszcze jedna zależność. Co w sytuacji kiedy wystawiamy faktury, a chcemy żeby niepotrzebne pola były ukryte. Do faktury wymagana jest nazwa, nip i adres wiec dobrze by było żeby mimo wszystko znajdywały się one w formularzu kasy. No i tu z pomocą przyjdzie nam kolejny fragment kodu, który wykorzystamy sobie do wykonania tego działania. W tym przykładzie oprzemy się na systemie do wystawiania faktur – fakturownia.pl.
Fakturownia po integracji automatycznie dodaje nam chackbox i to właśnie na nim oprzemy całą strukturę warunków.
Co chcemy uzyskać ?
Chcemy aby po zaznaczeniu chackbox’a pojawiały nam się dodatkowe pola, które są wymagane w przypadku faktury czyli nazwa firmy, nip i adres.
Jeśli chackbox będzie odznaczony pola będą ukryte.
add_action( 'woocommerce_after_checkout_form’,
’bbloomer_conditionally_hide_show_new_field’, 9999 );
function bbloomer_conditionally_hide_show_new_field() {
wc_enqueue_js( „
jQuery(’input#billing_faktura’).change(function() {
if (! this.checked) {
jQuery(’#billing_nip_field’).fadeOut();
jQuery(’#billing_nip_field input’).val(”);
} else {
jQuery(’#billing_nip_field’).fadeIn(); }
}).change();
„);
}
Jak zapewne zauważyliście użyty został również fragment jQuery, który odpowiada za funkcję if – jeśli oraz else – w przeciwnym razie.
Billing_faktura jest to nazwa naszego chackbox’a, od którego uzależnione będzie wyświetlanie poszczególnych pól. Natomiast billing_nip, jest to pole odpowiedzialne za wprowadzanie NIPU firmy i właśnie to pole będzie ukrywane bądź wyświetlane w zależności od zaznaczenia.
Dla pozostałych pól, które będziemy chcieli ukryć, wystarczy że przekopiujemy fragment:
wc_enqueue_js( „
jQuery(’input#billing_faktura’).change(function() {
if (! this.checked) {
jQuery(’#billing_NAZWAPOLA_field’).fadeOut();
jQuery(’#billing_NAZWAPOLA_field input’).val(”);
} else {
jQuery(’#billing_NAZWAPOLA_field’).fadeIn(); }
}).change();
„);
pamiętając o tym żeby zmienić odpowiednie wartości i koniecznie żeby wszystkie fragmenty znajdowały się między klamerkami {}.
Oczywiście to rozwiązanie możemy zastosować dla innego typu warunków, nie koniecznie dla faktur, jednak jest to jedno z najpraktyczniejszych udogodnień w momencie kiedy sprzedajemy produkty cyfrowe a nie chcemy żeby wyświetlały się nam wszystkie pola, które klient musi uzupełnić.
TO ROZWIĄZANIE JEST ŚCIŚLE POWIĄZANE Z ARTYKUŁEM ZMIANA WYMAGANYCH PÓL NA POLA OPCJONALNE W FORMULARZU KASY