Criando meu primeiro plugin WordPress
Criei meu primeiro plugin para WordPress chamado Bulk Classic to Block, e agora ele está disponível no repositório WordPress.org. Foi um processo divertido, mas definitivamente não foi simples, pois levei quase um mês para conseguir o v1.0.0 ao vivo.
Mas estou pronto para explicar tudo em detalhes nesta postagem do blog, então vamos direto ao assunto.
1. A ideia do plugin
Eu tinha um site WordPress muito antigo que estava intocado há anos e ainda usava o Editor Clássico, e como havia centenas de páginas no site, não era possível converter manualmente cada página em Blocos. Então… tive então a ideia de criar um plugin para WordPress que fizesse isso em massa.
Inicialmente não sabia se isso funcionaria ou não, mas pesquisei um pouco e comecei a trabalhar no plugin. Usei o Cursor AI e o Antigravity do Google para desenvolver isso.
2. Envio inicial para WordPress.org
Primeiramente, enviei o plugin para WordPress.org em 29 de novembro de 2025 e recebi o seguinte e-mail imediatamente depois disso.
E então não tive notícias deles por alguns dias.
3. Plugin verificado por um voluntário
13 dias depois, em 8 de dezembro de 2025, recebi o e-mail abaixo informando que um voluntário verificou meu plugin e identificou alguns problemas que precisam ser corrigidos e que eu precisava reenviar a versão atualizada.
Principalmente, os problemas estavam relacionados às duas coisas a seguir (juntamente com as soluções sugeridas):
- Use comandos wp_enqueue
- wp_register_script() e wp_enqueue_script() para adicionar código JavaScript de um arquivo.
- wp_add_inline_script() para adicionar código JavaScript embutido aos scripts declarados anteriormente.
- wp_register_style() e wp_enqueue_style() para adicionar CSS de um arquivo.
- wp_add_inline_style() para adicionar CSS embutido ao CSS declarado anteriormente.
- Nonces e permissões de usuário necessárias para segurança
- Adicione uma verificação nonce às suas chamadas de entrada ($_POST, $_GET, $REQUEST) para evitar acesso não autorizado.
4. Atualizado e reenviado o plugin
Em seguida, atualizei o plugin de acordo com as sugestões detalhadas do voluntário e o reenviei para aprovação no mesmo dia. E também lhes enviei este e-mail conforme sugerido no e-mail anterior.
E então esperei e esperava mais alguns problemas sinalizados pelo voluntário.
5. O plugin é aprovado
Para minha surpresa, hoje recebi este email do WordPress informando que o plugin já está aprovado. Fiquei feliz porque agora deveria estar no ar, mas depois visitar este URL https://wordpress.org/plugins/bulk-classic-to-block/ não mostrou nada.
Então… revisei o e-mail novamente, desta vez lendo cada linha, para descobrir que agora tenho que enviar o código aprovado para o diretório de plug-ins do WordPress via SVN. Esta informação foi enviada em outro e-mail que você vê abaixo.
Comecei a aprender como usar o SVN para WordPress e então entendi que é um sistema de controle de versão, muito parecido com o Git. Também aprendi que ele pode ser usado via CLI, bem como através de alguns clientes GUI como TortoiseSVN e SmartSVN, novamente, muito parecido com o Git.
6. Carregando o plugin
Decidi usar a CLI para usar svn (Subversion) porque qual é a diversão em usar isso através da GUI. No começo tive que instalar isso no meu computador e estou usando o macOS, então decidi instalar svn via Homebrew executando o seguinte comando:
brew install subversion
A ideia aqui era extrair o repositório público do WordPress.org do meu plugin em uma pasta localmente, copiar os arquivos do plugin nas pastas especificadas e, em seguida, colocar tudo no ar. Os arquivos de código (imagens) foram para o trunk pasta e, em seguida, as capturas de tela e os ícones foram para a pasta assets pasta. Abaixo estão os svn comandos que tive que executar:
svn checkout https://plugins.svn.wordpress.org/bulk-classic-to-block
cd bulk-classic-to-block
svn status
svn add trunk/* assets/* --force
svn commit -m "Initial commit of plugin files"
svn copy trunk tags/1.0.0
svn commit -m "Tag version 1.0.0"
Se desejar, aqui está o texto completo copiado do meu terminal.
deepak@m2air wordpress-org % svn checkout https://plugins.svn.wordpress.org/bulk-classic-to-block
A bulk-classic-to-block/assets
A bulk-classic-to-block/tags
A bulk-classic-to-block/trunk
Checked out revision 3424796.
deepak@m2air wordpress-org % cd bulk-classic-to-block
deepak@m2air bulk-classic-to-block % ls
assets tags trunk
deepak@m2air bulk-classic-to-block % svn status
? assets/screenshot-1.png
? assets/screenshot-2.png
? assets/screenshot-3.png
? trunk/LICENSE.txt
? trunk/README.txt
? trunk/bulk-classic-to-block.php
? trunk/index.php
? trunk/js
deepak@m2air bulk-classic-to-block % svn add trunk/* assets/* --force
A trunk/bulk-classic-to-block.php
A trunk/index.php
A trunk/js
A trunk/js/scripts.js
A trunk/LICENSE.txt
A trunk/README.txt
A (bin) assets/screenshot-1.png
A (bin) assets/screenshot-2.png
A (bin) assets/screenshot-3.png
deepak@m2air bulk-classic-to-block % svn status
A assets/screenshot-1.png
A assets/screenshot-2.png
A assets/screenshot-3.png
A trunk/LICENSE.txt
A trunk/README.txt
A trunk/bulk-classic-to-block.php
A trunk/index.php
A trunk/js
A trunk/js/scripts.js
deepak@m2air bulk-classic-to-block % svn commit -m "Initial commit of plugin files"
Authentication realm: <https://plugins.svn.wordpress.org:443> Use your WordPress.org login
Password for 'deepak': ********************************************
Authentication realm: <https://plugins.svn.wordpress.org:443> Use your WordPress.org login
Username: deepakness
Password for 'deepakness': ********************************************
Adding (bin) assets/screenshot-1.png
Adding (bin) assets/screenshot-2.png
Adding (bin) assets/screenshot-3.png
Adding trunk/LICENSE.txt
Adding trunk/README.txt
Adding trunk/bulk-classic-to-block.php
Adding trunk/index.php
Adding trunk/js
Adding trunk/js/scripts.js
Transmitting file data ........done
Committing transaction...
Committed revision 3424811.
deepak@m2air bulk-classic-to-block % svn copy trunk tags/1.0.0
A tags/1.0.0
deepak@m2air bulk-classic-to-block % svn commit -m "Tag version 1.0.0"
Adding tags/1.0.0
Adding tags/1.0.0/LICENSE.txt
Adding tags/1.0.0/README.txt
Adding tags/1.0.0/bulk-classic-to-block.php
Adding tags/1.0.0/index.php
Adding tags/1.0.0/js
Committing transaction...
Committed revision 3424816.
deepak@m2air bulk-classic-to-block %
E então meu plugin WordPress Clássico em massa para bloquear estava no ar e pude acessá-lo neste URL: https://wordpress.org/plugins/bulk-classic-to-block/
7. Atualizações futuras
Se eu atualizar alguma coisa nos arquivos do plugin no futuro, talvez seja necessário executar os seguintes comandos:
cd ~/bulk-classic-to-block
svn add assets/screenshot-4.png
svn commit -m "Update screenshots and readme"
Acima é quando adiciono uma captura de tela ou uma pequena alteração sem necessidade de atualizar a versão, mas quando tiver que fazer uma nova versão o processo será:
- Faça alterações nos arquivos da pasta /trunk
- Insira o número da versão em:
- Arquivo principal do plugin
- arquivo leiame.txt
- Seção Log de alterações
- Confirme /trunk usando o
svn commit -m "message"comando - Crie uma nova tag (importante) executando os seguintes comandos:
svn copy trunk tags/1.0.1
svn commit -m "Tag 1.0.1"
Além disso, alguns outros úteis svn os comandos podem ser:
svn status
svn diff
svn update
É isso!
Escrevi tudo detalhadamente aqui, porque com certeza precisarei relembrar no futuro quando atualizar o plugin ou mesmo quando tiver que publicar um novo plugin no WordPress.
Atualização: 22 de janeiro de 2026
Criei o repositório GitHub para o plugin de código aberto que você pode acessar aqui. Agora, você pode baixar o plug-in nas versões do GitHub ou instalá-lo diretamente por meio do repositório oficial do WordPress.org.
Continuaremos adicionando atualizações de plugins a esta página no futuro.
