WordPress · 08/09/2026
Jornal da Franca: case WordPress de portal regional em produção
O Jornal da Franca é o portal regional da Alta Mogiana. Quando o site legado começou a atrapalhar a redação e a publicidade, o desafio deixou de ser “um tema bonito”. Era preciso entregar um sistema de publicação que a redação usa todo dia, que o comercial vende e que o Google encontra.
Contents
- Introduction
- O problema do portal regional
- Arquitetura do tema
- Editorial, ads e feeds
- Mobile first e cutover
- Comparativo antes e depois
- Common Misconceptions
- FAQ
- Conclusion
Introduction
Este case documenta a reconstrução full stack do tema WordPress do Jornal da Franca em produção. Stack: WordPress clássico, PHP, Tailwind 4 com build local, Google Ad Manager e Yoast. O resultado está no ar em jornaldafranca.com.br.
Truth Box
| Key Point | Insight |
|---|---|
| Produto, não só layout | Home em rio cronológico, travas de publicação e Screen Options pensados com a redação. |
| Receita no tema | Mais de 27 unidades GAM com size mapping alinhado ao layout real (wrap, coluna, sidebar). |
| Utilidade local | Clima, câmbio, agro Franca, loterias e falecimentos no mesmo produto editorial. |
| SEO e LGPD juntos | JSON-LD NewsArticle, news sitemap, llms.txt, cookies antes do GPT e política editorial. |
| Cutover sem derrubar www | Staging para produção com tema versionado, RML, redirects 301 e iteração pós go-live. |

O problema do portal regional
Um jornal regional vive de leitura e de publicidade. O site antigo concentrava lógica frágil, inventário de banners legado, pastas de mídia acopladas a plugins e fluxos que geravam atrito: matérias “sumindo” em rascunho, horários desalinhados e home que não rodava.
O escopo cobriu arquitetura do tema, Google Ad Manager com consentimento, feeds utilitários, SEO, LGPD, migração e feedback contínuo do editor. Fora do Git ficaram core, uploads, plugins de terceiros e secrets, de propósito.
| Área | Dor no legado | Meta da entrega |
|---|---|---|
| Redação | Publicação silenciosa e home presa | Checklist claro e rio cronológico |
| Comercial | Inventário BSA desalinhado | Slots IAB mapeados ao layout |
| Leitor | UX mobile inconsistente | Dock, offcanvas e tipografia de jornal |
| Ops | Cutover arriscado | Staging, redirects e RML preservada |
Arquitetura do tema
functions.php só carrega módulos. Cada arquivo em inc/ tem uma responsabilidade (prefixo jdf_). Templates PHP renderizam o mínimo. O CSS Tailwind 4 é compilado na máquina local. O servidor não precisa de Node.
Decisões que importam em entrevista: escape e nonces em forms públicos, transients em queries caras, white-label com tokens CSS, tema clássico (não FSE) para controle editorial fino.
| Módulo | Entrega |
|---|---|
| editorial / home-sections | Travas, modal, rio da home |
| ad-manager / ad-inventory | Monetização GAM |
| data-feeds / agro | Ticker e agro regional |
| seo / privacy | Discovery e LGPD |
| mobile-rail | Experiência na matéria no celular |
Editorial, ads e feeds
Na redação: chapéu acima do título, foto e resumo obrigatórios, sync do resumo com Yoast (155 caracteres), teto de título com faixa SEO, relógio alinhado ao admin e plantão “Agora” com links clicáveis.
Na receita: size mapping por viewport, billboards só onde o layout aguenta, GPT só após aceite de cookies e área de anúncio que não some quando o fill falha. Na utilidade local: Open-Meteo, BCB, Agrolink, Caixa e snapshots de falecimentos.

Mobile first e cutover
Mobile first não foi afterthought. Offcanvas de editorias, dock fixo (Menu, Anuncie, Colunas, Busca) e trilho de widgets no scroll da matéria. Tipografia e masthead com pegada de broadsheet digital.


O cutover staging → www preservou o domínio, restaurou Real Media Library (~102 pastas, ~50k mídias no dump legado), trocou BSA por GAM e aplicou redirects 301. Pós go-live, a home passou a um rio cronológico e o modal de publicação tirou o silêncio das falhas.
Comparativo antes e depois
| Antes | Depois |
|---|---|
| Rascunho sem aviso | Modal com checklist do que falta |
| Home com offset quebrado | Rio: matéria nova no topo |
| Horário −3h nos cards | Horário absoluto alinhado ao admin |
| Inventário BSA | GAM nativo com consentimento |
| Agro incompleto | Boi, café, laranja, milho, soja, algodão SP |
Common Misconceptions
Mito: Portal de notícias é só um tema premium. Correção: Sem fluxo editorial, ads e cutover, o tema vira demo.
Mito: Google Ad Manager é colar um script. Correção: Size mapping, exclusividade de slot e consentimento definem fill rate e compliance.
Mito: Mobile first é só media query. Correção: Dock, rail e hierarquia de manchete mudam o produto no celular.
FAQ
O que foi desenvolvido no Jornal da Franca?
Tema WordPress modular, inventário GAM, feeds locais, SEO/LGPD, fluxos da redação e cutover do legado para www.
Qual stack técnica?
WordPress clássico, PHP 8.1+, Tailwind 4 (build local), Google Publisher Tag, Yoast e LiteSpeed.
O site está no ar?
Sim. Produção em www.jornaldafranca.com.br.
Como a redação publica agora?
Com travas de foto, chapéu e resumo. Se faltar algo, salva rascunho e abre modal listando o que completar.
Dá para ver o case no portfólio?
Sim. O case completo com prints desktop e mobile está em tlndesign.com.br/trabalhos/jornal-da-franca/.
Conclusion
O Jornal da Franca saiu de um legado frágil para um produto editorial em produção: redação com feedback claro, publicidade IAB responsável, utilidade regional e cutover sem derrubar o www. Se você precisa de um portal WordPress com essa profundidade, fale comigo.
Tiago Luvizoto Neves
Desenvolvedor Full Stack, escrevendo sobre código, UX e web desde 2004 Full Stack Developer, writing about code, UX and the web since 2004