{"id":2983,"date":"2023-07-23T17:44:29","date_gmt":"2023-07-23T20:44:29","guid":{"rendered":"https:\/\/felipeelia.com.br\/?p=2983"},"modified":"2023-07-23T17:46:31","modified_gmt":"2023-07-23T20:46:31","slug":"contact-form-7-repeatable-fields-2-0-0-pt-br","status":"publish","type":"post","link":"https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/","title":{"rendered":"Contact Form 7 \u2013 Repeatable Fields 2.0.0"},"content":{"rendered":"\n

L\u00e1 em 2018, eu criei um plugin pequeno para criar campos repet\u00edveis no Contact Form 7<\/a>. Com ele aprendi um monte de coisas diferentes e foi uma das amostras de c\u00f3digo que mandei durante o processo seletivo<\/a> da 10up. Lembro de ter virado a noite deixando ele mais bonitinho!<\/p>\n\n\n\n

Fui contratado pela 10up<\/a>, veio a pandemia e nunca mais mexi no plugin. Algumas pessoas entraram em contato perguntando, mas ele n\u00e3o estava mais no meu radar. Recentemente, uma atualiza\u00e7\u00e3o do Contact Form 7 quebrou a valida\u00e7\u00e3o dos campos e decidi que era hora de voltar.<\/p>\n\n\n\n

Mesmo que eu tentasse, n\u00e3o posso explicar o quanto eu aprendi nos \u00faltimos anos, principalmente liderando o desenvolvimento do ElasticPress<\/a>. Como tempo livre \u00e9 raro, decidi implementar as coisas mais b\u00e1sicas primeiro e lan\u00e7ar uma nova vers\u00e3o do meu plugin.<\/p>\n\n\n\n

Al\u00e9m de corrigir o tal erro de valida\u00e7\u00e3o, essa vers\u00e3o muda algumas outras coisas. Para mim, as principais s\u00e3o:<\/p>\n\n\n\n

    \n
  1. Testes unit\u00e1rios:<\/strong> por enquanto s\u00f3 tem um teste bem b\u00e1sico, mas o mais importante \u00e9 que a funda\u00e7\u00e3o j\u00e1 est\u00e1 l\u00e1, rodando os testes a cada commit<\/em> de um Pull Request. Agora \u00e9 s\u00f3 escrever mais testes.<\/li>\n\n\n\n
  2. Melhor documenta\u00e7\u00e3o:<\/strong> nessa vers\u00e3o mudei a documenta\u00e7\u00e3o para a Wiki do pr\u00f3prio GitHub<\/a>. Em um futuro pr\u00f3ximo, parte dela ser\u00e1 gerada automaticamente a partir dos coment\u00e1rios no c\u00f3digo.<\/li>\n\n\n\n
  3. Suporte:<\/strong> decidi que s\u00f3 oferecerei suporte no GitHub. Criei novos modelos para issues<\/em>, for\u00e7ando usu\u00e1rios que querem relatar um bug<\/a> a fornecerem dados espec\u00edficos do plugin.<\/li>\n\n\n\n
  4. Minifica\u00e7\u00e3o <\/em>do script:<\/strong> o plugin s\u00f3 tem um arquivo .js<\/em>, que antes era minificado<\/em> com Grunt. Mudei para usar o wp-scripts<\/a>.<\/li>\n<\/ol>\n\n\n\n

    Num futuro pr\u00f3ximo tamb\u00e9m pretendo implementar testes end-to-end<\/em>, provavelmente usando Cypress. Para isso, j\u00e1 inclui suporte ao wp-env<\/a>.<\/p>\n\n\n\n

    A vers\u00e3o nem foi lan\u00e7ada e j\u00e1 tenho um arrependimento: como fiz muitas coisas correndo e sozinho, acabei commitando<\/em> muitas coisas misturadas e direto na branch trunk<\/em>. Depois tentei ser mais disciplinado e abrir Pull Requests, mas n\u00e3o tive paci\u00eancia para documentar tudo certinho. Como o b\u00e1sico j\u00e1 est\u00e1 feito, de agora em diante ser\u00e1 mais f\u00e1cil fazer o certo \ud83d\ude09<\/p>\n\n\n\n

    Para quem quiser conferir o reposit\u00f3rio do plugin est\u00e1 em https:\/\/github.com\/felipeelia\/cf7-repeatable-fields<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"

    L\u00e1 em 2018, eu criei um plugin pequeno para criar campos repet\u00edveis no Contact Form 7. Com ele aprendi um monte de coisas diferentes e foi uma das amostras de c\u00f3digo que mandei durante o processo seletivo da 10up. Lembro de ter virado a noite deixando ele mais bonitinho! Fui contratado pela 10up, veio a […]<\/p>\n","protected":false},"author":1,"featured_media":928,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","footnotes":""},"categories":[216,194,30],"tags":[],"yoast_head":"\nContact Form 7 \u2013 Repeatable Fields 2.0.0 | Felipe Elia<\/title>\n<meta name=\"description\" content=\"L\u00e1 em 2018, eu criei um plugin pequeno para criar campos repet\u00edveis no Contact Form 7. Com ele aprendi um monte de coisas diferentes e foi uma das\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Contact Form 7 \u2013 Repeatable Fields 2.0.0 | Felipe Elia\" \/>\n<meta property=\"og:description\" content=\"L\u00e1 em 2018, eu criei um plugin pequeno para criar campos repet\u00edveis no Contact Form 7. Com ele aprendi um monte de coisas diferentes e foi uma das\" \/>\n<meta property=\"og:url\" content=\"https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/\" \/>\n<meta property=\"og:site_name\" content=\"Felipe Elia\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/felipe.elia\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/felipe.elia\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-23T20:44:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-23T20:46:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/felipeelia.com.br\/wp-content\/uploads\/2018\/03\/cf7-repeatable-fields.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Felipe Elia\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/felipe_elia\" \/>\n<meta name=\"twitter:site\" content=\"@felipe_elia\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Felipe Elia\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/\"},\"author\":{\"name\":\"Felipe Elia\",\"@id\":\"https:\/\/felipeelia.com.br\/#\/schema\/person\/927a99b6e1cde7fcf9f4f79a1638b292\"},\"headline\":\"Contact Form 7 \u2013 Repeatable Fields 2.0.0\",\"datePublished\":\"2023-07-23T20:44:29+00:00\",\"dateModified\":\"2023-07-23T20:46:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/\"},\"wordCount\":394,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/felipeelia.com.br\/#\/schema\/person\/927a99b6e1cde7fcf9f4f79a1638b292\"},\"articleSection\":[\"CF7 - Repeatable Fields\",\"Open Source\",\"WordPress\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/\",\"url\":\"https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/\",\"name\":\"Contact Form 7 \u2013 Repeatable Fields 2.0.0 | Felipe Elia\",\"isPartOf\":{\"@id\":\"https:\/\/felipeelia.com.br\/#website\"},\"datePublished\":\"2023-07-23T20:44:29+00:00\",\"dateModified\":\"2023-07-23T20:46:31+00:00\",\"description\":\"L\u00e1 em 2018, eu criei um plugin pequeno para criar campos repet\u00edveis no Contact Form 7. Com ele aprendi um monte de coisas diferentes e foi uma das\",\"breadcrumb\":{\"@id\":\"https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/felipeelia.dev\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Contact Form 7 \u2013 Repeatable Fields 2.0.0\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/felipeelia.com.br\/#website\",\"url\":\"https:\/\/felipeelia.com.br\/\",\"name\":\"Felipe Elia\",\"description\":\"Programa\u00e7\u00e3o com WordPress de um jeito f\u00e1cil, do b\u00e1sico ao avan\u00e7ado\",\"publisher\":{\"@id\":\"https:\/\/felipeelia.com.br\/#\/schema\/person\/927a99b6e1cde7fcf9f4f79a1638b292\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/felipeelia.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/felipeelia.com.br\/#\/schema\/person\/927a99b6e1cde7fcf9f4f79a1638b292\",\"name\":\"Felipe Elia\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/felipeelia.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/felipeelia.dev\/wp-content\/uploads\/2023\/06\/avatar-400x400-1.jpg\",\"contentUrl\":\"https:\/\/felipeelia.dev\/wp-content\/uploads\/2023\/06\/avatar-400x400-1.jpg\",\"width\":400,\"height\":400,\"caption\":\"Felipe Elia\"},\"logo\":{\"@id\":\"https:\/\/felipeelia.com.br\/#\/schema\/person\/image\/\"},\"description\":\"Associate Director of Platform Engineering na 10up, WordPress Core Contributor, Global Polyglots Mentor na comunidade internacional do WordPress e Locale Manager na comunidade WordPress Brasil.\",\"sameAs\":[\"https:\/\/www.facebook.com\/felipe.elia\",\"https:\/\/www.instagram.com\/felipe.elia\/\",\"https:\/\/www.linkedin.com\/in\/felipeelia\/\",\"https:\/\/twitter.com\/https:\/\/twitter.com\/felipe_elia\",\"https:\/\/www.youtube.com\/channel\/UCD_26rOE3ClALcZreTkyIoQ\"],\"url\":\"https:\/\/felipeelia.com.br\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Contact Form 7 \u2013 Repeatable Fields 2.0.0 | Felipe Elia","description":"L\u00e1 em 2018, eu criei um plugin pequeno para criar campos repet\u00edveis no Contact Form 7. Com ele aprendi um monte de coisas diferentes e foi uma das","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/","og_locale":"pt_BR","og_type":"article","og_title":"Contact Form 7 \u2013 Repeatable Fields 2.0.0 | Felipe Elia","og_description":"L\u00e1 em 2018, eu criei um plugin pequeno para criar campos repet\u00edveis no Contact Form 7. Com ele aprendi um monte de coisas diferentes e foi uma das","og_url":"https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/","og_site_name":"Felipe Elia","article_publisher":"https:\/\/www.facebook.com\/felipe.elia","article_author":"https:\/\/www.facebook.com\/felipe.elia","article_published_time":"2023-07-23T20:44:29+00:00","article_modified_time":"2023-07-23T20:46:31+00:00","og_image":[{"width":"1200","height":"630","url":"https:\/\/felipeelia.com.br\/wp-content\/uploads\/2018\/03\/cf7-repeatable-fields.png","type":"image\/png"}],"author":"Felipe Elia","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/felipe_elia","twitter_site":"@felipe_elia","twitter_misc":{"Escrito por":"Felipe Elia","Est. tempo de leitura":"2 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/#article","isPartOf":{"@id":"https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/"},"author":{"name":"Felipe Elia","@id":"https:\/\/felipeelia.com.br\/#\/schema\/person\/927a99b6e1cde7fcf9f4f79a1638b292"},"headline":"Contact Form 7 \u2013 Repeatable Fields 2.0.0","datePublished":"2023-07-23T20:44:29+00:00","dateModified":"2023-07-23T20:46:31+00:00","mainEntityOfPage":{"@id":"https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/"},"wordCount":394,"commentCount":0,"publisher":{"@id":"https:\/\/felipeelia.com.br\/#\/schema\/person\/927a99b6e1cde7fcf9f4f79a1638b292"},"articleSection":["CF7 - Repeatable Fields","Open Source","WordPress"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/","url":"https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/","name":"Contact Form 7 \u2013 Repeatable Fields 2.0.0 | Felipe Elia","isPartOf":{"@id":"https:\/\/felipeelia.com.br\/#website"},"datePublished":"2023-07-23T20:44:29+00:00","dateModified":"2023-07-23T20:46:31+00:00","description":"L\u00e1 em 2018, eu criei um plugin pequeno para criar campos repet\u00edveis no Contact Form 7. Com ele aprendi um monte de coisas diferentes e foi uma das","breadcrumb":{"@id":"https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/felipeelia.com.br\/contact-form-7-repeatable-fields-2-0-0-pt-br\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/felipeelia.dev\/"},{"@type":"ListItem","position":2,"name":"Contact Form 7 \u2013 Repeatable Fields 2.0.0"}]},{"@type":"WebSite","@id":"https:\/\/felipeelia.com.br\/#website","url":"https:\/\/felipeelia.com.br\/","name":"Felipe Elia","description":"Programa\u00e7\u00e3o com WordPress de um jeito f\u00e1cil, do b\u00e1sico ao avan\u00e7ado","publisher":{"@id":"https:\/\/felipeelia.com.br\/#\/schema\/person\/927a99b6e1cde7fcf9f4f79a1638b292"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/felipeelia.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":["Person","Organization"],"@id":"https:\/\/felipeelia.com.br\/#\/schema\/person\/927a99b6e1cde7fcf9f4f79a1638b292","name":"Felipe Elia","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/felipeelia.com.br\/#\/schema\/person\/image\/","url":"https:\/\/felipeelia.dev\/wp-content\/uploads\/2023\/06\/avatar-400x400-1.jpg","contentUrl":"https:\/\/felipeelia.dev\/wp-content\/uploads\/2023\/06\/avatar-400x400-1.jpg","width":400,"height":400,"caption":"Felipe Elia"},"logo":{"@id":"https:\/\/felipeelia.com.br\/#\/schema\/person\/image\/"},"description":"Associate Director of Platform Engineering na 10up, WordPress Core Contributor, Global Polyglots Mentor na comunidade internacional do WordPress e Locale Manager na comunidade WordPress Brasil.","sameAs":["https:\/\/www.facebook.com\/felipe.elia","https:\/\/www.instagram.com\/felipe.elia\/","https:\/\/www.linkedin.com\/in\/felipeelia\/","https:\/\/twitter.com\/https:\/\/twitter.com\/felipe_elia","https:\/\/www.youtube.com\/channel\/UCD_26rOE3ClALcZreTkyIoQ"],"url":"https:\/\/felipeelia.com.br\/author\/admin\/"}]}},"uagb_featured_image_src":{"full":["https:\/\/felipeelia.com.br\/wp-content\/uploads\/2018\/03\/cf7-repeatable-fields.png",1200,630,false],"thumbnail":["https:\/\/felipeelia.com.br\/wp-content\/uploads\/2018\/03\/cf7-repeatable-fields-150x150.png",150,150,true],"medium":["https:\/\/felipeelia.com.br\/wp-content\/uploads\/2018\/03\/cf7-repeatable-fields-300x158.png",300,158,true],"medium_large":["https:\/\/felipeelia.com.br\/wp-content\/uploads\/2018\/03\/cf7-repeatable-fields-768x403.png",768,403,true],"large":["https:\/\/felipeelia.com.br\/wp-content\/uploads\/2018\/03\/cf7-repeatable-fields-1024x538.png",1024,538,true],"1536x1536":["https:\/\/felipeelia.com.br\/wp-content\/uploads\/2018\/03\/cf7-repeatable-fields.png",1200,630,false],"2048x2048":["https:\/\/felipeelia.com.br\/wp-content\/uploads\/2018\/03\/cf7-repeatable-fields.png",1200,630,false],"ocean-thumb-m":["https:\/\/felipeelia.com.br\/wp-content\/uploads\/2018\/03\/cf7-repeatable-fields.png",600,315,false],"ocean-thumb-ml":["https:\/\/felipeelia.com.br\/wp-content\/uploads\/2018\/03\/cf7-repeatable-fields.png",800,420,false],"ocean-thumb-l":["https:\/\/felipeelia.com.br\/wp-content\/uploads\/2018\/03\/cf7-repeatable-fields.png",1200,630,false],"yarpp-thumbnail":["https:\/\/felipeelia.com.br\/wp-content\/uploads\/2018\/03\/cf7-repeatable-fields.png",120,63,false]},"uagb_author_info":{"display_name":"Felipe Elia","author_link":"https:\/\/felipeelia.com.br\/author\/admin\/"},"uagb_comment_info":0,"uagb_excerpt":"L\u00e1 em 2018, eu criei um plugin pequeno para criar campos repet\u00edveis no Contact Form 7. Com ele aprendi um monte de coisas diferentes e foi uma das amostras de c\u00f3digo que mandei durante o processo seletivo da 10up. Lembro de ter virado a noite deixando ele mais bonitinho! Fui contratado pela 10up, veio a…","_links":{"self":[{"href":"https:\/\/felipeelia.com.br\/wp-json\/wp\/v2\/posts\/2983"}],"collection":[{"href":"https:\/\/felipeelia.com.br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/felipeelia.com.br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/felipeelia.com.br\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/felipeelia.com.br\/wp-json\/wp\/v2\/comments?post=2983"}],"version-history":[{"count":0,"href":"https:\/\/felipeelia.com.br\/wp-json\/wp\/v2\/posts\/2983\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/felipeelia.com.br\/wp-json\/wp\/v2\/media\/928"}],"wp:attachment":[{"href":"https:\/\/felipeelia.com.br\/wp-json\/wp\/v2\/media?parent=2983"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/felipeelia.com.br\/wp-json\/wp\/v2\/categories?post=2983"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/felipeelia.com.br\/wp-json\/wp\/v2\/tags?post=2983"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}