{"id":387,"date":"2014-10-08T11:22:57","date_gmt":"2014-10-08T09:22:57","guid":{"rendered":"http:\/\/webowiec.net\/blog\/?p=387"},"modified":"2015-04-09T11:27:30","modified_gmt":"2015-04-09T09:27:30","slug":"wordpress-contact-form-7-multi-level-select","status":"publish","type":"post","link":"https:\/\/webowiec.net\/blog\/wordpress-contact-form-7-multi-level-select\/","title":{"rendered":"[wordpress] [Contact Form 7] multi level select"},"content":{"rendered":"<p>Pracuj\u0105c z formularzami na skrypcie WordPress, ci\u0119\u017cko nie natchn\u0105\u0107 si\u0119 na wtyczk\u0119 &#8220;<strong>Contact Form 7<\/strong>&#8221; &#8211;\u00a0<em>wordpress.org\/plugins\/contact-form-7\/<\/em><\/p>\n<p>Pomimo rozbudowanych funkcjonali\u015bci, niekt\u00f3rzy mog\u0105 odczuwa\u0107 pewne braki w mo\u017cliwo\u015bciach formatowania p\u00f3l formularza a w szczeg\u00f3lno\u015bci dodawaniu w\u0142asnych p\u00f3l, nie przewidzianych wcze\u015bniej przez autora wtyczki.<\/p>\n<p>Jednym z takich przyk\u0142ad\u00f3w mo\u017ce by\u0107 wielo-poziomowy znacznik SELECT, wi\u0119c lista rozwijana, gdzie u\u017cytkownik mo\u017ce wybiera\u0107 dowoln\u0105 pozycje, kt\u00f3ra automatycznie spowoduje za\u0142adowanie do kolejnego znacznika SELECT.<\/p>\n<p><span style=\"color: #808080;\"><strong>Przyk\u0142adem takiego multi-level select jest wyb\u00f3r miasta, powiedzmy, \u017ce w naszym formularzu umie\u015bcimy pole SELECT z wyborem wojew\u00f3dztwa a poni\u017cej zablokowane pole w wyborem miasta. Dopiero po wyboru jakiego\u015b wojew\u00f3dztwa, u\u017cytkownik dostanie dost\u0119p do wyboru miasta, spo\u015br\u00f3d wczytanej listy miast tylko z wybranego wojew\u00f3dztwa.<\/strong><\/span><\/p>\n<p>DEMO:\u00a0<a href=\"https:\/\/webowiec.net\/blog\/test-mmselect\/\">https:\/\/webowiec.net\/blog\/test-mmselect\/<br \/>\nL<\/a>ICENCJA: MIT (darmowa, open-source)<\/p>\n<div class=\"alert alert-info\"><b>Aktualizacja 9 kwietnia 2015<\/b><br \/>\nWtyczka dostosowana do frameworka Bootstrap<\/div>\n<p><!--more--><\/p>\n<p>Wymagania:<br \/>\n&#8211; minimalna\u00a0znajomo\u015b\u0107 PHP, obs\u0142ugi FTP, podstawy HTML<br \/>\n&#8211; podstawowa\u00a0znajomo\u015b\u0107 WordPress<br \/>\n&#8211; zainstalowana wtyczka &#8220;Contact Form 7&#8221; i dost\u0119p do FTP<br \/>\n&#8211; poradnik zosta\u0142 pisany dla wersji wtyczki 3.9.3<\/p>\n<p>1) Zaczynamy od lokalizacji katalogu wtyczki na FTP, przewa\u017cnie b\u0119dzie to:<br \/>\n<strong>.\/wp-content\/plugins\/contact-form-7\/<\/strong><\/p>\n<p>2) Uruchamiamy plik:<br \/>\n<strong>.\/wp-content\/plugins\/contact-form-7\/includes\/functions.php<\/strong><\/p>\n<p>Znajdujemy funkcje &#8220;<strong>wpcf7_load_modules<\/strong>&#8221; (wiersz oko\u0142o 361) w \u015brodku tej funkcji szukamy nast\u0119puj\u0105cej linii:<\/p>\n<p>[php]<br \/>\n foreach ( $mods as $mod ) {<br \/>\n[\/php]<\/p>\n<p><span style=\"text-decoration: underline;\">Przed t\u0105 lini\u0105<\/span> dodajemy nast\u0119puj\u0105cy kod:<\/p>\n<p>[php]<br \/>\n$mods[] = &#8216;mmselect&#8217;;<br \/>\n[\/php]<\/p>\n<p>Tak wi\u0119c fragment tej funkcji b\u0119dzie wygl\u0105da\u0142:<\/p>\n<p>[php]<br \/>\n$mods = array(<br \/>\n&#8216;acceptance&#8217;, &#8216;flamingo&#8217;, &#8216;special-mail-tags&#8217;,&#8217;akismet&#8217;, &#8216;jetpack&#8217;, &#8216;submit&#8217;, &#8216;captcha&#8217;, &#8216;number&#8217;,&#8217;text&#8217;, &#8216;checkbox&#8217;, &#8216;quiz&#8217;, &#8216;textarea&#8217;, &#8216;date&#8217;,&#8217;response&#8217;, &#8216;file&#8217;, &#8216;select&#8217;, &#8216;listo&#8217; ;<br \/>\n$mods[] = &#8216;mmselect&#8217;;<br \/>\nforeach ( $mods as $mod ) {<br \/>\n[\/php]<\/p>\n<p>3) pobieramy i rozpakowujemy plik\u00a0<a class=\"btn btn-xs btn-success\" href=\"https:\/\/webowiec.net\/blog\/wp-content\/uploads\/2014\/10\/mmselect.php.zip\" target=\"_blank\">mmselect.php.zip<\/a><\/p>\n<p>Rozpakowany plik PHP umieszczamy na FTP w folderze:<br \/>\n<strong>.\/wp-content\/plugins\/contact-form-7\/modules\/<\/strong><\/p>\n<p><span style=\"color: #99cc00;\"><strong><span style=\"text-decoration: underline;\">TO WSZYSTKO, teraz mo\u017cna przej\u015b\u0107 do edycji formularza:<\/span><\/strong><\/span><\/p>\n<p>4) Tworzymy plik tekstowy (polecam program Notepad++) z warto\u015bciami p\u00f3l SELECT w formie drzewka, czyli ka\u017cda warto\u015b\u0107 select-a w osobnej linii, natomiast podrz\u0119dna warto\u015b\u0107 musi by\u0107 poprzedzona TABULATOREM, zobacz przyk\u0142adowy plik w <a href=\"https:\/\/webowiec.net\/blog\/test-mmselect\/\">DEMO<\/a>.<\/p>\n<p><strong>Plik zapisujemy jako &#8220;mmselect_data.txt&#8221; i wrzucamy w dowolne miejsce na FTP (trzeba zna\u0107 pe\u0142n\u0105 \u015bcie\u017ck\u0119\u00a0do pliku!)<\/strong><\/p>\n<p>5) Uruchamiamy panel admina naszego bloga, przechodzimy do sekcji &#8220;Formularze &gt; Formularze&#8221; nast\u0119pnie wybieramy dodany wcze\u015bniej formularz lub tworzymy nowy i w polu &#8220;Formularz&#8221; umieszczamy poni\u017cszy zapis:<\/p>\n<p>[html]<br \/>\n&lt;p&gt;[mmselect nazwa_pola\u00a0&quot;\/PELNA-SCIEZKA-DO\/mmselect_data.txt&quot; &quot;Wybierz kraj&quot; &quot;Wybierz wojew\u00f3dztwo&quot; &quot;Wybierz miasto&quot;]&lt;\/p&gt;<br \/>\n[\/html]<\/p>\n<p>Gdzie:<\/p>\n<p><strong><span style=\"color: #ff0000;\">\u00a0&#8220;nazwa_pola&#8221;<\/span><\/strong> &#8211; wygenerowana warto\u015b\u0107 utworzona przez z\u0142\u0105czenie wszystkich poszczeg\u00f3lnych p\u00f3l\u00a0SELECT wchodz\u0105cych w sk\u0142ad &#8220;mmselect&#8221; (odpowiednik parametru &lt;select name=&#8221;nazwa_pola&#8221;&gt;).<\/p>\n<p><span style=\"color: #ff0000;\"><strong>&#8220;\/PELNA-SCIEZKA-DO\/mmselect_data.txt&#8221;<\/strong><\/span> to pe\u0142na \u015bcie\u017cka do pliku tekstowego TXT wrzuconego\u00a0na FTP (patrz punkt 4)<\/p>\n<p><span style=\"color: #ff0000;\"><strong>&#8220;Wybierz kraj&#8221; &#8220;Wybierz wojew\u00f3dztwo&#8221; &#8220;Wybierz miasto&#8221;<\/strong> <\/span>&#8211; lista\u00a0opis\u00f3w p\u00f3l SELECT. <strong>UWAGA! Opis\u00f3w musi by\u0107 dok\u0142adnie tyle ile wynosi\u00a0maksymalny poziom pliku tekstowego (patrz punkt 4). <\/strong><\/p>\n<p>Je\u015bli potrzebujemy jedynie dwa poziomy (pola SELECT) o nazwach: &#8220;Marka auta&#8221; i kolejne o nazwie &#8220;Model auta&#8221;, musimy utworzyc taki kod:<\/p>\n<p>[html]<br \/>\n&lt;p&gt;[mmselect nazwa_pola &quot;\/PELNA-SCIEZKA-DO\/mmselect_data.txt&quot; &quot;Marka auta&quot; &quot;Model auta&quot;]&lt;\/p&gt;<br \/>\n[\/html]<\/p>\n<p>Analogicznie dla wi\u0119kszej ilo\u015bci p\u00f3l.<\/p>\n<p>6) Zapisujemy warto\u015b\u0107 p\u00f3l SELECT: na podstronie edycji naszego formularza w polu &#8220;Tre\u015b\u0107 wiadomo\u015bci:&#8221; dodajemy kod:<\/p>\n<p>[html]<br \/>\nWarto\u015b\u0107 mmselect = [nazwa_pola]<br \/>\n[\/html]<\/p>\n<p>Po wype\u0142nieniu formularza przez u\u017cytkownika na podany przez nas mail w ustawieniach dojdzie wiadomo\u015b\u0107 o przyk\u0142adowej tre\u015bci:<\/p>\n<p>[html]<br \/>\nWarto\u015b\u0107 mmselect = Polska &#8211; Podkarpackie &#8211; Mielec<br \/>\n[\/html]<\/p>\n<p>&nbsp;<\/p>\n<p>&#8212;<br \/>\nWtyczka testowana dla trzech poziom\u00f3w SELECT\u00f3w, ale powinna dzia\u0142a\u0107 dla dowolnej ilo\u015bci<\/p>\n<p>Wtyczka pisana &#8220;na kolanie&#8221; wi\u0119c mo\u017ce zawiera\u0107 pewne b\u0142\u0119dy lub niedoci\u0105gni\u0119cia, w przypadku wykrycia takich b\u0142\u0119d\u00f3w &#8211; prosze o <a href=\"https:\/\/webowiec.net\/blog\/kontakt-2\/\">kontakt<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pracuj\u0105c z formularzami na skrypcie WordPress, ci\u0119\u017cko nie natchn\u0105\u0107 si\u0119 na wtyczk\u0119 &#8220;Contact Form 7&#8221; &#8211;\u00a0wordpress.org\/plugins\/contact-form-7\/ Pomimo rozbudowanych funkcjonali\u015bci, niekt\u00f3rzy mog\u0105 odczuwa\u0107 pewne braki w mo\u017cliwo\u015bciach formatowania p\u00f3l formularza a w szczeg\u00f3lno\u015bci dodawaniu w\u0142asnych p\u00f3l, nie przewidzianych wcze\u015bniej przez autora &hellip; <a href=\"https:\/\/webowiec.net\/blog\/wordpress-contact-form-7-multi-level-select\/\" class=\"btn btn-sm btn-primary\"><i class=\"glyphicon glyphicon-link\"><\/i> Czytaj ca\u0142o\u015b\u0107<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23,5,3,6],"tags":[624,618,623,416,622,626,332,621,625,620,619],"class_list":["post-387","post","type-post","status-publish","format-standard","hentry","category-darmowe-komponenty-2","category-poradniki","category-porady-dla-webmasterow","category-tourtale","tag-auto-load-select-wordpress","tag-contect-form-7","tag-multi-level-select-wordpress","tag-php","tag-php-html-multi-select-z-pliku-tekstowego","tag-php-jak-zrobic-wielo-poziomowy-select","tag-wordpress","tag-wordpress-contect-form-7-automatyczny-select","tag-wordpress-formularz-duzy-select-automatyczne-wczytywanie-wartosci","tag-wordpress-multi-select","tag-wordpress-wielo-poziomowy-select"],"_links":{"self":[{"href":"https:\/\/webowiec.net\/blog\/wp-json\/wp\/v2\/posts\/387","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webowiec.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webowiec.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webowiec.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webowiec.net\/blog\/wp-json\/wp\/v2\/comments?post=387"}],"version-history":[{"count":6,"href":"https:\/\/webowiec.net\/blog\/wp-json\/wp\/v2\/posts\/387\/revisions"}],"predecessor-version":[{"id":482,"href":"https:\/\/webowiec.net\/blog\/wp-json\/wp\/v2\/posts\/387\/revisions\/482"}],"wp:attachment":[{"href":"https:\/\/webowiec.net\/blog\/wp-json\/wp\/v2\/media?parent=387"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webowiec.net\/blog\/wp-json\/wp\/v2\/categories?post=387"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webowiec.net\/blog\/wp-json\/wp\/v2\/tags?post=387"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}