{"id":233656,"date":"2023-02-18T19:30:00","date_gmt":"2023-02-18T16:30:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233656"},"modified":"2022-11-11T03:17:00","modified_gmt":"2022-11-11T00:17:00","slug":"kodowanie-form-grawitacyjnych-wprowadzenie","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/kodowanie-form-grawitacyjnych-wprowadzenie\/","title":{"rendered":"Kodowanie form grawitacyjnych: wprowadzenie"},"content":{"rendered":"\n<p><a href=\"https:\/\/www.gravityforms.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Gravity Forms<\/a> jest prawdopodobnie najbardziej znan\u0105 i najlepsz\u0105 wtyczk\u0105 do tworzenia formularzy dla WordPressa. Jest nie tylko \u0142atwy w u\u017cyciu i zawiera wiele dodatk\u00f3w do wprowadzania p\u0142atno\u015bci lub biuletynu do formularzy. Ale jest r\u00f3wnie\u017c bardzo przyjazny dla programist\u00f3w i elastyczny. Osobi\u015bcie u\u017cywam i rozwijam z Gravity Forms od co najmniej 5 lat \u2013 i nigdy nie mia\u0142em funkcji, kt\u00f3ra nie by\u0142aby mo\u017cliwa lub naprawd\u0119 trudna do opracowania z Gravity Forms.<\/p>\n<p>Pami\u0119taj, \u017ce Gravity Forms nie jest darmowe. Musisz kupi\u0107 licencj\u0119. Oferuj\u0105 kilka r\u00f3\u017cnych typ\u00f3w z r\u00f3\u017cnymi cenami, aby je zdoby\u0107 i wykorzysta\u0107. Po zakupieniu licencji uzyskasz r\u00f3wnie\u017c dost\u0119p do wybranych dodatk\u00f3w, w zale\u017cno\u015bci od zakupionej licencji.<\/p>\n<h2>Formy grawitacyjne dla nas programist\u00f3w<\/h2>\n<p>Gravity Forms oferuje wiele filtr\u00f3w i haczyk\u00f3w, ale nie ma szablon\u00f3w, kt\u00f3re mo\u017cna nadpisa\u0107. Haki oferuj\u0105 programistom du\u017c\u0105 elastyczno\u015b\u0107 w rozszerzaniu i modyfikowaniu zachowania Gravity Forms. Zajrzyj na <a href=\"https:\/\/docs.gravityforms.com\/category\/developers\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">strony dokumentacji programist\u00f3w Gravity Forms<\/a>. Wi\u0119kszo\u015b\u0107, je\u015bli nie wszystkie, dostosowania zostan\u0105 wykonane na niekt\u00f3rych obiektach Gravity Forms; bezpo\u015brednio lub przez <code>GFAPI<\/code>klas\u0119 Gravity Forms API (). Mo\u017cesz tak\u017ce wchodzi\u0107 w interakcj\u0119 z Gravity Forms za pomoc\u0105 REST API (kt\u00f3re jest rozszerzeniem <a href=\"https:\/\/developer.wordpress.org\/rest-api\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">REST API WordPressa<\/a> ).<\/p>\n<p>Przyk\u0142adowe mo\u017cliwo\u015bci dla programist\u00f3w to modyfikowanie danych wyj\u015bciowych p\u00f3l, zmiana warto\u015bci p\u00f3l przed ich zapisaniem jako lead oraz programowe dostosowywanie powiadomie\u0144 e-mail. Inne przyk\u0142ady obejmuj\u0105 dodawanie niestandardowych ustawie\u0144 formularzy, tworzenie nowych typ\u00f3w p\u00f3l oraz wstrzykiwanie niestandardowych p\u00f3l lub warto\u015bci p\u00f3l do istniej\u0105cych formularzy.<\/p>\n<p>Gravity Forms ma struktur\u0119 \u201eDodatk\u00f3w&quot;, kt\u00f3ra pozwoli\u0142a innym programistom na tworzenie w\u0142asnych dodatk\u00f3w do Gravity Forms. I powsta\u0142o ich ca\u0142kiem sporo. Przyk\u0142adami dodatk\u00f3w s\u0105 rejestracja w MailChimp, bramki p\u0142atno\u015bci ze Stripe, Hubspot integracja, ankiety, quiz, integracja z Zapier i Dropbox. Dost\u0119pne dodatki zale\u017c\u0105 od posiadanej licencji. Zapoznaj si\u0119 z <a href=\"https:\/\/www.gravityforms.com\/add-ons\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">przegl\u0105dem tutaj<\/a>.<\/p>\n<h2>Renderowanie formularza<\/h2>\n<p>Wyprowadzenie formularza odbywa si\u0119 za pomoc\u0105 skr\u00f3t\u00f3w, np.:<\/p>\n<pre><code>[gravityform id=\"2\" name=\"Contact us\" ajax=\"true\"]<\/code><\/pre>\n<p>Nie martw si\u0119, Gravity Forms doda przyciski i okna dialogowe, aby u\u0142atwi\u0107 u\u017cytkownikowi osadzanie formularzy w Twoich postach. Ty ani redaktorzy tre\u015bci nie b\u0119dziecie musieli r\u0119cznie wpisywa\u0107 kr\u00f3tkich kod\u00f3w.<\/p>\n<p>Ale je\u015bli jako programista kiedykolwiek b\u0119dziesz musia\u0142 programowo osadzi\u0107 formularz w szablonie, wszystko, co musisz wiedzie\u0107, to identyfikator formularza, a nast\u0119pnie po prostu powt\u00f3rz kr\u00f3tki kod. Kiedy wypisujemy kr\u00f3tki kod w PHP, musimy go owin\u0105\u0107, <code>do_shortcode()<\/code>aby WordPress poprawnie skonwertowa\u0142 kr\u00f3tki kod. Gravity Forms zajmie si\u0119 dodawaniem wszystkich niezb\u0119dnych skrypt\u00f3w i styl\u00f3w za Ciebie, nawet je\u015bli renderujesz formularz za pomoc\u0105 PHP.<\/p>\n<pre><code>echo do_shortcode('[gravityform id=\"2\" name=\"Contact us\" ajax=\"true\"]');<\/code><\/pre>\n<h2>Pobieranie informacji o formularzu<\/h2>\n<p>Dost\u0119pne s\u0105 proste funkcje API do pobierania informacji, np. pobieranie wszystkich formularzy lub jednego konkretnego obiektu formularza. Obiekty s\u0105 wype\u0142niane wszystkimi ustawieniami, w tym wszystkimi polami w formularzu, a tak\u017ce mo\u017cna uzyska\u0107 wszystkie wpisy formularza (odpowiedzi formularza). Za\u0142\u00f3\u017cmy, \u017ce chcesz wygenerowa\u0107 <code>&lt;select&gt;<\/code>formularz ze wszystkimi opublikowanymi formularzami, umo\u017cliwiaj\u0105c u\u017cytkownikowi wyb\u00f3r mi\u0119dzy opublikowanymi formularzami:<\/p>\n<pre><code>\/\/ ...\n$all_forms = GFAPI::get_forms();\nif (!empty($all_forms)) {\n    $select = '&lt;select&gt;';\n    foreach ($all_forms as $form) {\n        $select .= '&lt;option value=\"'. $form['id']. '\"&gt;'. $form['title']. '&lt;\/option&gt;';\n    }\n    $select .= '&lt;\/select&gt;';\n}\necho $select;\n\/\/ ...<\/code><\/pre>\n<p>Aby post\u0119powa\u0107 zgodnie z dobrymi standardami kodowania, zw\u0142aszcza bior\u0105c pod uwag\u0119, \u017ce Gravity Forms to wtyczka, kt\u00f3r\u0105 mo\u017cna dezaktywowa\u0107 lub po prostu nie istnie\u0107, zawsze sprawd\u017a, czy kt\u00f3rakolwiek z klas Gravity Forms istnieje, zanim ich u\u017cyjesz! Przed powy\u017cszym kodem doda\u0142bym:<\/p>\n<pre><code>if (!class_exists('GFAPI')) {\n    return;\n}\n\/\/ Do stuff with GFAPI class<\/code><\/pre>\n<p>Do pobrania konkretnego obiektu formularza wystarczy identyfikator formularza (1 w poni\u017cszym przypadku):<\/p>\n<pre><code>$form = GFAPI::get_form(1);<\/code><\/pre>\n<p>Mo\u017cesz nawet manipulowa\u0107 formularzem poprzez obiekt, a nast\u0119pnie aktualizowa\u0107 go, na przyk\u0142ad zmieniaj\u0105c tytu\u0142 formularza:<\/p>\n<pre><code>$form = GFAPI::get_form(1);\n$form['title'] = __('New Form Title', 'txtdomain');\nGFAPI::update_form($form);<\/code><\/pre>\n<h2>Pobieranie lead\u00f3w z formularza (odpowiedzi)<\/h2>\n<p>Pobranie wpis\u00f3w formularza (odpowiedzi z formularza) dla identyfikatora formularza 1 jest tak proste, jak:<\/p>\n<pre><code>$entries = GFAPI::get_entries(1);<\/code><\/pre>\n<p>Mo\u017cna r\u00f3wnie\u017c pobra\u0107 okre\u015blony wpis wraz z jego identyfikatorem iw ten sam spos\u00f3b, jak w przypadku aktualizacji formularza, mo\u017cna manipulowa\u0107 obiektem wpisu i wywo\u0142a\u0107 na nim funkcj\u0119 aktualizacji, aby zapisa\u0107 go wraz ze zmianami. Poni\u017cszy przyk\u0142ad zapisuje pusty ci\u0105g w meta adresie IP wpisu, a tak\u017ce warto\u015b\u0107 pola ID 2:<\/p>\n<pre><code>$entry_to_change = GFAPI::get_entry(42);\n$entry_to_change['ip'] = '';\n$entry_to_change['2'] = 'New value';\nGFAPI::update_entry($entry_to_change);<\/code><\/pre>\n<p>Wszystko powy\u017csze to modyfikacje na bardzo podstawowym poziomie. B\u0105d\u017a na bie\u017c\u0105co z <a href=\"https:\/\/awhitepixel.com\/blog\/category\/gravity-forms\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kategori\u0105 Gravity Forms<\/a>, aby uzyska\u0107 wi\u0119cej samouczk\u00f3w i bardziej z\u0142o\u017cone funkcje kodu.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W tym przewodniku dla pocz\u0105tkuj\u0105cych programist\u00f3w przyjrzymy si\u0119 podstawom kodowania formularzy Gravity w WordPress. Przyjrzymy si\u0119 pokr\u00f3tce prostym przyk\u0142adom kodu.<\/p>\n","protected":false},"author":1,"featured_media":152742,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[897,721,721,919,897,919,1110,815,845,845,866,866,815],"tags":[1169],"class_list":["post-233656","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kod","category-deweloper","category-inny","category-n-a","category-wtyczki","category-samouczki","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/233656","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=233656"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/233656\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/152742"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=233656"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=233656"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=233656"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}