{"id":233646,"date":"2023-02-18T19:43:00","date_gmt":"2023-02-18T16:43:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233646"},"modified":"2022-11-11T00:49:20","modified_gmt":"2022-11-10T21:49:20","slug":"codificacao-para-formas-gravitacionais-uma-introducao","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/codificacao-para-formas-gravitacionais-uma-introducao\/","title":{"rendered":"Codifica\u00e7\u00e3o para formas gravitacionais: uma introdu\u00e7\u00e3o"},"content":{"rendered":"\n<p><a href=\"https:\/\/www.gravityforms.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">O Gravity Forms<\/a> \u00e9 talvez o plugin construtor de formul\u00e1rios mais conhecido e melhor para WordPress. Al\u00e9m de ser f\u00e1cil de usar, possui muitos complementos para implementar pagamentos ou newsletters em seus formul\u00e1rios. Mas tamb\u00e9m \u00e9 muito amig\u00e1vel ao desenvolvedor e flex\u00edvel. Pessoalmente, uso e desenvolvo com Gravity Forms h\u00e1 pelo menos 5 anos \u2013 e nunca tive um recurso que n\u00e3o fosse poss\u00edvel ou muito dif\u00edcil de desenvolver com Gravity Forms.<\/p>\n<p>Tenha em mente que o Gravity Forms n\u00e3o \u00e9 gratuito. Voc\u00ea tem que comprar uma licen\u00e7a. Eles oferecem v\u00e1rios tipos diferentes com pre\u00e7os diferentes para obt\u00ea-lo e us\u00e1-lo. Depois de comprar uma licen\u00e7a, voc\u00ea tamb\u00e9m ter\u00e1 acesso a uma sele\u00e7\u00e3o de complementos, dependendo da licen\u00e7a adquirida.<\/p>\n<h2>Gravity Forms para n\u00f3s desenvolvedores<\/h2>\n<p>O Gravity Forms oferece muitos filtros e ganchos, mas n\u00e3o h\u00e1 modelos que voc\u00ea possa substituir. Os ganchos oferecem muita flexibilidade para os desenvolvedores estenderem e modificarem o comportamento do Gravity Forms. D\u00ea uma olhada nas <a href=\"https:\/\/docs.gravityforms.com\/category\/developers\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">p\u00e1ginas de documenta\u00e7\u00e3o dos desenvolvedores do Gravity Forms<\/a>. A maioria, se n\u00e3o todas as personaliza\u00e7\u00f5es ser\u00e3o feitas em alguns objetos do Gravity Forms; diretamente ou por meio <code>GFAPI<\/code>da classe Gravity Forms API (). Voc\u00ea tamb\u00e9m pode interagir com o Gravity Forms usando a API REST (que est\u00e1 estendendo <a href=\"https:\/\/developer.wordpress.org\/rest-api\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">a API REST do WordPress<\/a> ).<\/p>\n<p>As possibilidades de exemplo para desenvolvedores s\u00e3o modificar sa\u00eddas de campo, alterar os valores de campo antes de serem salvos como um lead e ajustar de forma program\u00e1tica as notifica\u00e7\u00f5es por e-mail. Outros exemplos incluem adicionar configura\u00e7\u00f5es de formul\u00e1rio personalizado, criar novos tipos de campo e injetar campos personalizados ou valores de campo em formul\u00e1rios existentes.<\/p>\n<p>Gravity Forms tem uma estrutura de &quot;Add-Ons&quot; que permitiu que outros desenvolvedores criassem Add-Ons para Gravity Forms pr\u00f3prios. E alguns foram feitos. Exemplos de Add-Ons s\u00e3o inscri\u00e7\u00e3o no MailChimp, gateways de pagamento com Stripe, Hubspot integra\u00e7\u00e3o, enquetes, question\u00e1rio, integra\u00e7\u00e3o com Zapier e Dropbox. Quais complementos est\u00e3o dispon\u00edveis depende da sua licen\u00e7a. D\u00ea uma olhada em uma <a href=\"https:\/\/www.gravityforms.com\/add-ons\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">vis\u00e3o geral aqui<\/a>.<\/p>\n<h2>Renderizando um formul\u00e1rio<\/h2>\n<p>A sa\u00edda de um formul\u00e1rio \u00e9 feita usando c\u00f3digos de acesso, por exemplo:<\/p>\n<pre><code>[gravityform id=\"2\" name=\"Contact us\" ajax=\"true\"]<\/code><\/pre>\n<p>N\u00e3o se preocupe, o Gravity Forms adicionar\u00e1 bot\u00f5es e caixas de di\u00e1logo para incorporar formul\u00e1rios f\u00e1ceis de usar em suas postagens. Voc\u00ea ou os editores de conte\u00fado n\u00e3o precisar\u00e3o digitar os c\u00f3digos de acesso manualmente.<\/p>\n<p>Mas se voc\u00ea, como desenvolvedor, precisar incorporar um formul\u00e1rio programaticamente dentro de um modelo, tudo o que voc\u00ea precisa saber \u00e9 o ID do formul\u00e1rio e, em seguida, simplesmente ecoar o c\u00f3digo de acesso. Quando produzimos um shortcode em PHP, precisamos envolv\u00ea-lo <code>do_shortcode()<\/code>para que o WordPress converta o shortcode corretamente. Gravity Forms ir\u00e1 lidar com a adi\u00e7\u00e3o de todos os scripts e estilos necess\u00e1rios para voc\u00ea, mesmo quando voc\u00ea renderiza um formul\u00e1rio com PHP.<\/p>\n<pre><code>echo do_shortcode('[gravityform id=\"2\" name=\"Contact us\" ajax=\"true\"]');<\/code><\/pre>\n<h2>Buscando informa\u00e7\u00f5es do formul\u00e1rio<\/h2>\n<p>Existem fun\u00e7\u00f5es de API simples dispon\u00edveis para buscar informa\u00e7\u00f5es, por exemplo, obter todos os formul\u00e1rios ou um objeto de formul\u00e1rio espec\u00edfico. Os objetos s\u00e3o preenchidos com todas as configura\u00e7\u00f5es, incluindo todos os campos do formul\u00e1rio, e voc\u00ea tamb\u00e9m pode obter todas as entradas do formul\u00e1rio (respostas do formul\u00e1rio). Digamos que voc\u00ea queira gerar um <code>&lt;select&gt;<\/code>com todos os formul\u00e1rios publicados, oferecendo ao usu\u00e1rio a escolha entre os formul\u00e1rios publicados:<\/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>Para seguir bons padr\u00f5es de codifica\u00e7\u00e3o, principalmente considerando que o Gravity Forms \u00e9 um plugin que pode ser desativado ou simplesmente n\u00e3o existir, sempre verifique se alguma das classes do Gravity Forms existe antes de us\u00e1-las! Antes do c\u00f3digo acima eu acrescentaria:<\/p>\n<pre><code>if (!class_exists('GFAPI')) {\n    return;\n}\n\/\/ Do stuff with GFAPI class<\/code><\/pre>\n<p>Para recuperar o objeto de um formul\u00e1rio espec\u00edfico, tudo o que voc\u00ea precisa \u00e9 o ID do formul\u00e1rio (1 no caso abaixo):<\/p>\n<pre><code>$form = GFAPI::get_form(1);<\/code><\/pre>\n<p>Voc\u00ea pode at\u00e9 mesmo manipular o formul\u00e1rio atrav\u00e9s do objeto e depois atualiz\u00e1-lo, por exemplo, alterando o t\u00edtulo do formul\u00e1rio:<\/p>\n<pre><code>$form = GFAPI::get_form(1);\n$form['title'] = __('New Form Title', 'txtdomain');\nGFAPI::update_form($form);<\/code><\/pre>\n<h2>Recuperando os leads de um formul\u00e1rio (respostas)<\/h2>\n<p>Recuperar as entradas de um formul\u00e1rio (respostas de formul\u00e1rio) para o ID 1 do formul\u00e1rio \u00e9 t\u00e3o simples quanto:<\/p>\n<pre><code>$entries = GFAPI::get_entries(1);<\/code><\/pre>\n<p>Voc\u00ea tamb\u00e9m pode recuperar uma entrada espec\u00edfica com seu ID e, da mesma forma que atualiza o formul\u00e1rio, pode manipular o objeto de entrada e chamar uma fun\u00e7\u00e3o de atualiza\u00e7\u00e3o para salv\u00e1-lo com suas altera\u00e7\u00f5es. O exemplo abaixo salva uma string vazia na meta do endere\u00e7o IP da entrada, bem como o valor do campo 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>Todos os itens acima s\u00e3o modifica\u00e7\u00f5es no n\u00edvel muito b\u00e1sico. Fique ligado na <a href=\"https:\/\/awhitepixel.com\/blog\/category\/gravity-forms\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">categoria Gravity Forms<\/a> para mais tutoriais e funcionalidades de c\u00f3digo mais complexas.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste guia para desenvolvedores iniciantes, veremos os conceitos b\u00e1sicos de como codificar Gravity Forms no WordPress. Veremos brevemente exemplos de c\u00f3digo simples.<\/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":[898,898,722,722,920,1110,920,816,816,846,846,867,867],"tags":[1170],"class_list":{"0":"post-233646","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-codigo-2","9":"category-desenvolvedor","11":"category-outro","12":"category-n-a","14":"category-plug-ins","16":"category-tutoriais","18":"category-wordpress-8","20":"tag-affiai-pt-pt"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/233646","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=233646"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/233646\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/152742"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=233646"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=233646"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=233646"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}