Como criar um plugin de anúncios no WordPress com controle automático e manual
Durante muito tempo, inserir anúncios em posts WordPress foi sempre a mesma história: soluções engessadas, plugins pesados ou código espalhado pelo tema.
Em um projeto antigo, eu precisei resolver um problema simples, mas que acabou mudando completamente minha forma de pensar desenvolvimento.
A necessidade era: inserir anúncios automaticamente no conteúdo, mas sem perder o controle manual quando necessário.
Foi aí que nasceu a ideia de construir uma lógica baseada no próprio conteúdo. E depois, transformei isso em um plugin.
O problema
No início, a regra era simples: inserir um anúncio a cada 8 parágrafos.
Mas na prática, isso não funcionava para todos os posts.
Alguns conteúdos ficavam poluídos outros não tinham parágrafos suficientes e em alguns casos o anúncio precisava aparecer em um ponto específico.
Ou seja, não existia uma única solução.
A solução: três modos de funcionamento
O plugin foi pensado para resolver isso com flexibilidade.
Ele possui três modos:
- Sem anúncios: O conteúdo é exibido sem nenhuma alteração.
- Automático: O plugin insere anúncios com base na quantidade de parágrafos.
- Manual: O editor decide exatamente onde o anúncio deve aparecer.
Modo manual: controle total
No modo manual, o editor usa um shortcode no conteúdo: [nousk_ads]
E o plugin substitui esse shortcode pelo código do anúncio.
Simples. Sem interface complicada. Sem configuração extra. Sem depender de blocos específicos.
Isso dá controle total para quem está escrevendo.
Modo automático: onde entra o parser
No modo automático, o plugin precisa:
- entender o conteúdo
- contar parágrafos válidos
- inserir anúncios sem quebrar o HTML
E para isso, entra o conceito de parsing.
O que é parsing nesse contexto
Nesse caso, parsing é a lógica usada para ler o conteúdo do post, identificar os parágrafos e reconstruir esse conteúdo com os anúncios inseridos nos pontos certos.
No caso do WordPress:
o conteúdo do post é uma string com HTML
O plugin:
1. lê esse conteúdo
2. divide em partes
3. identifica o que é relevante
4. reconstrói o conteúdo com novas regras
Como o plugin analisa o conteúdo
A lógica funciona assim: Na versão atual, a lógica trata o conteúdo com base no fechamento de parágrafos (</p>), usando essa estrutura como referência para identificar onde os anúncios podem ser inseridos.
Parágrafos vazios são ignorados:
- <p></p>
- <p> </p>
Inserção dos anúncios
Depois de contar os parágrafos válidos, o plugin:
- insere o anúncio a cada X parágrafos
- evita inserir anúncios consecutivos
- mantém a estrutura original do conteúdo
E tem uma regra importante: sempre garantir um anúncio no final do post, mesmo que o conteúdo seja pequeno.
Validação: evitando erro antes de quebrar o conteúdo
Uma parte importante do plugin é a validação no admin.
No modo automático:
Erros (bloqueiam)
- intervalo vazio
- intervalo menor que 1
Avisos (não bloqueiam)
intervalo maior que a quantidade de parágrafos válidos. Nesse caso, o plugin avisa que: o anúncio aparecerá apenas ao final.
Isso evita comportamento inesperado e deixa o uso do plugin mais claro para quem está editando.
Estrutura do plugin
O plugin foi dividido em classes, cada uma com uma responsabilidade:
- Admin: configuração global
- Metabox: controle por post
- Shortcode: modo manual
- Parser: lógica de inserção automática
- Validator: regras e mensagens no admin
Isso mantém o código organizado e fácil de evoluir.
O ponto mais importante: pensar em quem edita
Esse plugin não nasceu só como solução técnica. Ele nasceu de um problema real de edição de conteúdo. A ideia não era só inserir anúncios. Era permitir que quem escreve tenha controle, sem precisar entender código.
Limitações da versão atual
Essa é a primeira versão do plugin, então algumas decisões foram feitas para manter a simplicidade:
- apenas um tipo de anúncio global
- não diferencia mobile e desktop
- não possui opções visuais
- parsing baseado em `<p>`
Possíveis melhorias para próximas versões
Aqui já tem bastante espaço para evoluir:
- suporte a múltiplos anúncios
- anúncios diferentes para mobile e desktop
- opções de layout e estilo
- escolha de posicionamento final
- melhor integração com Gutenberg
- parser mais avançado para HTML complexo