Pracując z formularzami na skrypcie WordPress, ciężko nie natchnąć się na wtyczkę “Contact Form 7” – wordpress.org/plugins/contact-form-7/
Pomimo rozbudowanych funkcjonaliści, niektórzy mogą odczuwać pewne braki w możliwościach formatowania pól formularza a w szczególności dodawaniu własnych pól, nie przewidzianych wcześniej przez autora wtyczki.
Jednym z takich przykładów może być wielo-poziomowy znacznik SELECT, więc lista rozwijana, gdzie użytkownik może wybierać dowolną pozycje, która automatycznie spowoduje załadowanie do kolejnego znacznika SELECT.
Przykładem takiego multi-level select jest wybór miasta, powiedzmy, że w naszym formularzu umieścimy pole SELECT z wyborem województwa a poniżej zablokowane pole w wyborem miasta. Dopiero po wyboru jakiegoś województwa, użytkownik dostanie dostęp do wyboru miasta, spośród wczytanej listy miast tylko z wybranego województwa.
DEMO: https://webowiec.net/blog/test-mmselect/
LICENCJA: MIT (darmowa, open-source)
Wtyczka dostosowana do frameworka Bootstrap
Wymagania:
– minimalna znajomość PHP, obsługi FTP, podstawy HTML
– podstawowa znajomość WordPress
– zainstalowana wtyczka “Contact Form 7” i dostęp do FTP
– poradnik został pisany dla wersji wtyczki 3.9.3
1) Zaczynamy od lokalizacji katalogu wtyczki na FTP, przeważnie będzie to:
./wp-content/plugins/contact-form-7/
2) Uruchamiamy plik:
./wp-content/plugins/contact-form-7/includes/functions.php
Znajdujemy funkcje “wpcf7_load_modules” (wiersz około 361) w środku tej funkcji szukamy następującej linii:
foreach ( $mods as $mod ) {
Przed tą linią dodajemy następujący kod:
$mods[] = 'mmselect';
Tak więc fragment tej funkcji będzie wyglądał:
$mods = array( 'acceptance', 'flamingo', 'special-mail-tags','akismet', 'jetpack', 'submit', 'captcha', 'number','text', 'checkbox', 'quiz', 'textarea', 'date','response', 'file', 'select', 'listo' ; $mods[] = 'mmselect'; foreach ( $mods as $mod ) {
3) pobieramy i rozpakowujemy plik mmselect.php.zip
Rozpakowany plik PHP umieszczamy na FTP w folderze:
./wp-content/plugins/contact-form-7/modules/
TO WSZYSTKO, teraz można przejść do edycji formularza:
4) Tworzymy plik tekstowy (polecam program Notepad++) z wartościami pól SELECT w formie drzewka, czyli każda wartość select-a w osobnej linii, natomiast podrzędna wartość musi być poprzedzona TABULATOREM, zobacz przykładowy plik w DEMO.
Plik zapisujemy jako “mmselect_data.txt” i wrzucamy w dowolne miejsce na FTP (trzeba znać pełną ścieżkę do pliku!)
5) Uruchamiamy panel admina naszego bloga, przechodzimy do sekcji “Formularze > Formularze” następnie wybieramy dodany wcześniej formularz lub tworzymy nowy i w polu “Formularz” umieszczamy poniższy zapis:
<p>[mmselect nazwa_pola "/PELNA-SCIEZKA-DO/mmselect_data.txt" "Wybierz kraj" "Wybierz województwo" "Wybierz miasto"]</p>
Gdzie:
“nazwa_pola” – wygenerowana wartość utworzona przez złączenie wszystkich poszczególnych pól SELECT wchodzących w skład “mmselect” (odpowiednik parametru <select name=”nazwa_pola”>).
“/PELNA-SCIEZKA-DO/mmselect_data.txt” to pełna ścieżka do pliku tekstowego TXT wrzuconego na FTP (patrz punkt 4)
“Wybierz kraj” “Wybierz województwo” “Wybierz miasto” – lista opisów pól SELECT. UWAGA! Opisów musi być dokładnie tyle ile wynosi maksymalny poziom pliku tekstowego (patrz punkt 4).
Jeśli potrzebujemy jedynie dwa poziomy (pola SELECT) o nazwach: “Marka auta” i kolejne o nazwie “Model auta”, musimy utworzyc taki kod:
<p>[mmselect nazwa_pola "/PELNA-SCIEZKA-DO/mmselect_data.txt" "Marka auta" "Model auta"]</p>
Analogicznie dla większej ilości pól.
6) Zapisujemy wartość pól SELECT: na podstronie edycji naszego formularza w polu “Treść wiadomości:” dodajemy kod:
Wartość mmselect = [nazwa_pola]
Po wypełnieniu formularza przez użytkownika na podany przez nas mail w ustawieniach dojdzie wiadomość o przykładowej treści:
Wartość mmselect = Polska - Podkarpackie - Mielec
—
Wtyczka testowana dla trzech poziomów SELECTów, ale powinna działać dla dowolnej ilości
Wtyczka pisana “na kolanie” więc może zawierać pewne błędy lub niedociągnięcia, w przypadku wykrycia takich błędów – prosze o kontakt