{"id":3888,"date":"2016-07-13T14:50:13","date_gmt":"2016-07-13T17:50:13","guid":{"rendered":"https:\/\/www.mxcursos.com\/blog\/?p=3888"},"modified":"2017-06-17T06:15:51","modified_gmt":"2017-06-17T09:15:51","slug":"select-dinamico-no-contact-form-7-no-wordpress","status":"publish","type":"post","link":"https:\/\/www.mxcursos.com\/blog\/select-dinamico-no-contact-form-7-no-wordpress\/","title":{"rendered":"WordPress &#8211; Select din\u00e2mico no Contact Form 7"},"content":{"rendered":"<p>O Contact Form 7 \u00e9 um dos plugins mais populares para cria\u00e7\u00e3o de formul\u00e1rios de contato no WordPress. Para utiliz\u00e1-lo, basicamente, voc\u00ea trabalhar\u00e1 utilizando <em>shortcodes\u00a0<\/em>criados pelo plugin e inserindo-os nas suas p\u00e1ginas ou posts no WordPress. Isso faz com que aquele form seja exibido. O plugin cria <em>shortcodes<\/em> tanto para inserir o formul\u00e1rio nas p\u00e1ginas e posts como para inserir os campos dentro do pr\u00f3prio formul\u00e1rio.<\/p>\n<p>Muitas vezes precisamos definir conte\u00fados\u00a0personalizados em uma determinada\u00a0op\u00e7\u00e3o, como no select por exemplo e fica invi\u00e1vel acessar\u00a0toda hora as configura\u00e7\u00f5es do formul\u00e1rio para adicionar mais uma op\u00e7\u00e3o.<\/p>\n<p>Para resolvemos essa quest\u00e3o podemos utilizar um <em>filter<\/em>.<\/p>\n<p>Neste tutorial, a vers\u00e3o que estou utilizando do <a href=\"https:\/\/br.wordpress.org\/\" target=\"_blank\" rel=\"noopener\">WordPress<\/a>\u00a0\u00a04.5.3 e do Plugin\u00a0<a href=\"https:\/\/br.wordpress.org\/plugins\/contact-form-7\/\" target=\"_blank\" rel=\"noopener\">Contact Form 7<\/a> \u00e9\u00a04.4.2<\/p>\n<p>Vamos simular\u00a0a seguinte situa\u00e7\u00e3o:\u00a0Precisamos que as categorias de um post sejam mostrados num select\u00a0e\u00a0essas categorias sempre tem uma rotatividade de nomes. Ent\u00e3o, n\u00e3o caberia neste exemplo adicionarmos manualmente as categorias nos formul\u00e1rios.<\/p>\n<p>Ent\u00e3o vamos utilizar o filtro\u00a0<em>wpcf7_form_tag<\/em>\u00a0do plugin e com ele criaremos uma atributo que quando inserido ir\u00e1 definir o nosso conte\u00fado personalizado.<\/p>\n<p>Vamos adicionar no arquivo <em>functions.php<\/em> do tema uma fun\u00e7\u00e3o que ser\u00e1 chamada pelo filtro do plugin.<\/p>\n<p>Segue a fun\u00e7\u00e3o:<\/p>\n<pre class=\"lang:php decode:true \">function create_dynamic_select_list($tag, $unused){\r\n\t$options    = (array)$tag['options'];\r\n\t$categories = false;\r\n\t$search      = 'options_categories';\r\n\t\r\n\tforeach ($options as $option) {\r\n\t\tif (preg_match(\"\/^\".$search.\"$\/\", $option, $matches)){\r\n\t\t\t$categories = true;\r\n\t\t\tbreak;\r\n\t\t} \r\n\t}\t\r\n\t\r\n\tif($categories){\r\n\t\t$terms = get_terms('category', array('hide_empty' =&gt; false));\r\n\t\tforeach($terms as $term){\r\n\t\t\t$tag['raw_values'][] = $term-&gt;name;  \r\n\t\t\t$tag['values'][] = $term-&gt;name;  \r\n\t\t\t$tag['labels'][] = $term-&gt;name;\t\t\t\r\n\t\t}\r\n\t}\r\n\treturn $tags;\r\n}<\/pre>\n<p>1 = Define uma fun\u00e7\u00e3o que receber\u00e1 2 par\u00e2metros;<br \/>\n2 = Seleciona as op\u00e7\u00f5es das tags;<br \/>\n3 = Define uma vari\u00e1vel pra informar se op\u00e7\u00e3o que criamos existe;<br \/>\n4 = Define o nome do atributo que usaremos no formul\u00e1rio;<br \/>\n6 = Percorre as op\u00e7\u00f5es\u00a0da tag do formul\u00e1rio;<br \/>\n7 = Verifica se existe o atributo que queremos;<br \/>\n8 = Se exibir, adicionar o valor para $categories como verdadeira;<br \/>\n9 = Para o loop;<br \/>\n13 = Verificar se a vari\u00e1vel <em>$categories<\/em> \u00e9 verdadeira;<br \/>\n14 = Seleciona todas as categorias;<br \/>\n15 = Percorre as categorias;<br \/>\n16,17 = Define o valor da op\u00e7\u00e3o;<br \/>\n18 = Define o valor que ser\u00e1 exibido para usu\u00e1rio;<br \/>\n21 = retorna as tags.<\/p>\n<p>Agora vamos\u00a0informa em qual filtro queremos que seja executada essa fun\u00e7\u00e3o.<\/p>\n<pre class=\"lang:php decode:true \">add_filter( 'wpcf7_form_tag', 'create_dynamic_select_list', 10, 2);\r\n<\/pre>\n<p>Pronto, agora \u00e9 s\u00f3 us\u00e1-lo no\u00a0Contact Form 7<\/p>\n<p><a href=\"https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2016\/06\/contact-form-7-tutorial.jpg\"><img decoding=\"async\" class=\"img-responsive alignnone wp-image-3901 size-full\" src=\"https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2016\/06\/contact-form-7-tutorial.jpg\" alt=\"WordPress - Contact Form 7 e sua aplica\u00e7\u00e3o com filtro\" width=\"976\" height=\"554\" srcset=\"https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2016\/06\/contact-form-7-tutorial.jpg 976w, https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2016\/06\/contact-form-7-tutorial-600x341.jpg 600w, https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2016\/06\/contact-form-7-tutorial-768x436.jpg 768w, https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2016\/06\/contact-form-7-tutorial-740x420.jpg 740w, https:\/\/www.mxcursos.com\/blog\/wp-content\/uploads\/2016\/06\/contact-form-7-tutorial-24x14.jpg 24w\" sizes=\"(max-width: 976px) 100vw, 976px\" \/><\/a><\/p>\n<p>Espero que tenham gostado, e at\u00e9 a pr\u00f3xima.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O Contact Form 7 \u00e9 um dos plugins mais populares para cria\u00e7\u00e3o de formul\u00e1rios de contato no WordPress. Para utiliz\u00e1-lo, basicamente, voc\u00ea trabalhar\u00e1 utilizando shortcodes\u00a0criados pelo plugin e inserindo-os nas suas p\u00e1ginas ou posts no WordPress. Isso faz com que aquele form seja exibido. O plugin cria shortcodes tanto para inserir o formul\u00e1rio nas p\u00e1ginas [&hellip;]<\/p>\n","protected":false},"author":67,"featured_media":4045,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[291],"tags":[],"class_list":["post-3888","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress"],"_links":{"self":[{"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/posts\/3888","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/users\/67"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/comments?post=3888"}],"version-history":[{"count":0,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/posts\/3888\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/media\/4045"}],"wp:attachment":[{"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/media?parent=3888"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/categories?post=3888"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mxcursos.com\/blog\/wp-json\/wp\/v2\/tags?post=3888"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}