Lá em 2018, eu criei um plugin pequeno para criar campos repetíveis no Contact Form 7. Com ele aprendi um monte de coisas diferentes e foi uma das amostras de código que mandei durante o processo seletivo da 10up. Lembro de ter virado a noite deixando ele mais bonitinho!
Fui contratado pela 10up, veio a pandemia e nunca mais mexi no plugin. Algumas pessoas entraram em contato perguntando, mas ele não estava mais no meu radar. Recentemente, uma atualização do Contact Form 7 quebrou a validação dos campos e decidi que era hora de voltar.
Mesmo que eu tentasse, não posso explicar o quanto eu aprendi nos últimos anos, principalmente liderando o desenvolvimento do ElasticPress. Como tempo livre é raro, decidi implementar as coisas mais básicas primeiro e lançar uma nova versão do meu plugin.
Além de corrigir o tal erro de validação, essa versão muda algumas outras coisas. Para mim, as principais são:
- Testes unitários: por enquanto só tem um teste bem básico, mas o mais importante é que a fundação já está lá, rodando os testes a cada commit de um Pull Request. Agora é só escrever mais testes.
- Melhor documentação: nessa versão mudei a documentação para a Wiki do próprio GitHub. Em um futuro próximo, parte dela será gerada automaticamente a partir dos comentários no código.
- Suporte: decidi que só oferecerei suporte no GitHub. Criei novos modelos para issues, forçando usuários que querem relatar um bug a fornecerem dados específicos do plugin.
- Minificação do script: o plugin só tem um arquivo .js, que antes era minificado com Grunt. Mudei para usar o wp-scripts.
Num futuro próximo também pretendo implementar testes end-to-end, provavelmente usando Cypress. Para isso, já inclui suporte ao wp-env.
A versão nem foi lançada e já tenho um arrependimento: como fiz muitas coisas correndo e sozinho, acabei commitando muitas coisas misturadas e direto na branch trunk. Depois tentei ser mais disciplinado e abrir Pull Requests, mas não tive paciência para documentar tudo certinho. Como o básico já está feito, de agora em diante será mais fácil fazer o certo 😉
Para quem quiser conferir o repositório do plugin está em https://github.com/felipeelia/cf7-repeatable-fields.