Como Usar Dados Estruturados (Schema.org) no WordPress
Ganhe elegibilidade para rich results, aumente o CTR e ajude o Google a entender seu conteúdo. Implementação segura com JSON‑LD, plugins e snippets.
1) Conceitos rápidos
- Schema.org: vocabulário para descrever conteúdo (artigos, produtos, FAQ, empresa, etc.).
- JSON‑LD: formato recomendado; fica no
<head>(ou no<body>) sem alterar HTML visível. - Consistência: tudo que está no JSON‑LD deve existir na página (mesmo título, preço, imagem, autor, nota, etc.).
- Sem duplicação: evite schemas conflitantes gerados por mais de um plugin.
2) Três caminhos para implementar
- Plugins SEO (fácil): Rank Math, Yoast, SEOPress adicionam Article/Organization/Breadcrumbs automaticamente.
- Plugins dedicados: Schema Pro, WooCommerce (Product/Offer/Review), plugins de FAQ/HowTo em blocos.
- Snippets no tema (avançado): total controle com JSON‑LD via
wp_headou blocos Gutenberg.
3) Pacote básico para quase todo site
3.1 Organization (ou LocalBusiness)
<script type="application/ld+json">{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Server Express",
"url": "https://example.com",
"logo": "https://example.com/logo.png",
"sameAs": ["https://facebook.com/...", "https://instagram.com/..."]
}</script>
3.2 WebSite + SearchAction
<script type="application/ld+json">{
"@context":"https://schema.org",
"@type":"WebSite",
"url":"https://example.com",
"name":"Server Express",
"potentialAction":{
"@type":"SearchAction",
"target":"https://example.com/?s={search_term_string}",
"query-input":"required name=search_term_string"
}
}</script>
3.3 BreadcrumbList
<script type="application/ld+json">{
"@context":"https://schema.org",
"@type":"BreadcrumbList",
"itemListElement":[
{"@type":"ListItem","position":1,"name":"Início","item":"https://example.com/"},
{"@type":"ListItem","position":2,"name":"Blog","item":"https://example.com/blog/"},
{"@type":"ListItem","position":3,"name":"Post atual"}
]}</script>
4) Article/BlogPosting (posts do WordPress)
<script type="application/ld+json">{
"@context":"https://schema.org",
"@type":"BlogPosting",
"mainEntityOfPage":{"@type":"WebPage","@id":"https://example.com/blog/meu-artigo/"},
"headline":"Título do post",
"image":["https://example.com/uploads/capa.webp"],
"datePublished":"2025-08-14",
"dateModified":"2025-08-14",
"author":{"@type":"Person","name":"Seu Nome"},
"publisher":{"@type":"Organization","name":"Server Express","logo":{"@type":"ImageObject","url":"https://example.com/logo.png"}},
"description":"Resumo objetivo do artigo (até ~160 caracteres)."
}</script>
Dica: mantenha headline, imagem e datas idênticas às do post.
5) FAQPage e HowTo (ganham rich results)
5.1 FAQPage
<script type="application/ld+json">{
"@context":"https://schema.org",
"@type":"FAQPage",
"mainEntity":[
{"@type":"Question","name":"Como ativar dados estruturados no WP?",
"acceptedAnswer":{"@type":"Answer","text":"Use um plugin SEO ou insira JSON-LD via wp_head()."}},
{"@type":"Question","name":"Preciso de AMP?",
"acceptedAnswer":{"@type":"Answer","text":"Não. JSON-LD funciona em qualquer página."}}
]}</script>
5.2 HowTo (tutoriais passo a passo)
<script type="application/ld+json">{
"@context":"https://schema.org",
"@type":"HowTo",
"name":"Como limpar cache no WordPress",
"image":"https://example.com/uploads/howto.webp",
"totalTime":"PT5M",
"step":[
{"@type":"HowToStep","name":"Acessar painel","text":"Entre em Configurações do plugin de cache."},
{"@type":"HowToStep","name":"Limpar cache","text":"Clique em Limpar/Purge e confirme."}
]}</script>
6) Product/Offer/Review (WooCommerce)
WooCommerce já gera schema básico. Se precisar customizar (preço, disponibilidade, avaliações), ajuste com filtros.
<script type="application/ld+json">{
"@context":"https://schema.org",
"@type":"Product",
"name":"Hospedagem WordPress 1GB",
"image":["https://example.com/uploads/plan-1gb.webp"],
"description":"Plano com SSL, PHP atualizado e antivírus.",
"sku":"WP-1GB",
"brand":{"@type":"Brand","name":"Server Express"},
"offers":{
"@type":"Offer",
"priceCurrency":"BRL",
"price":"49.99",
"availability":"https://schema.org/InStock",
"url":"https://example.com/planos/1gb/"
},
"aggregateRating":{"@type":"AggregateRating","ratingValue":"4.8","reviewCount":"152"}
}</script>
7) LocalBusiness (empresa local)
<script type="application/ld+json">{
"@context":"https://schema.org",
"@type":"LocalBusiness",
"name":"Server Express",
"image":"https://example.com/logo.png",
"url":"https://example.com",
"telephone":"+55 61 98467-7496",
"address":{"@type":"PostalAddress","streetAddress":"Av. Exemplo, 100","addressLocality":"Brasília","addressRegion":"DF","postalCode":"70000-000","addressCountry":"BR"},
"openingHoursSpecification":[{"@type":"OpeningHoursSpecification","dayOfWeek":["Monday","Tuesday","Wednesday","Thursday","Friday"],"opens":"09:00","closes":"18:00"}],
"sameAs":["https://facebook.com/...","https://instagram.com/..."]
}</script>
8) WordPress: como inserir JSON‑LD via código
8.1 Inserir no <head> (tema/child theme)
<?php
// functions.php
add_action('wp_head', function () {
if (is_single()) {
$title = esc_js(get_the_title());
$url = esc_url(get_permalink());
$img = esc_url(get_the_post_thumbnail_url(null, 'full'));
$dateP = get_the_date('c');
$dateM = get_the_modified_date('c');
?>
<script type="application/ld+json">{
"@context":"https://schema.org",
"@type":"BlogPosting",
"mainEntityOfPage":{"@type":"WebPage","@id":"<?= $url ?>"},
"headline":"<?= $title ?>",
"image":["<?= $img ?>"],
"datePublished":"<?= $dateP ?>",
"dateModified":"<?= $dateM ?>",
"author":{"@type":"Person","name":"<?= esc_js(get_the_author()) ?>"}
}</script>
<?php
}
});
8.2 Bloquinho Gutenberg (FAQ/HowTo) sem plugin
<!-- Insira um bloco HTML personalizado e cole o JSON-LD da seção 5 -->
8.3 Evitar duplicação com plugins
- Se Rank Math/Yoast já emitem Article/Organization, NÃO duplique via código.
- Desative módulos redundantes: ex. FAQ do tema + FAQ do plugin → deixe só um.
9) Preencher schema com ACF/CPT (dinâmico)
<?php
// Ex.: CPT "servico" com campos ACF: preco, moeda, imagem
add_action('wp_head', function(){
if (!is_singular('servico')) return;
$url = get_permalink();
$nome = get_the_title();
$img = get_the_post_thumbnail_url(null,'full');
$preco = get_field('preco');
$moeda = get_field('moeda') ?: 'BRL';
?>
<script type="application/ld+json">{
"@context":"https://schema.org",
"@type":"Service",
"name":"<?= esc_js($nome) ?>",
"image":"<?= esc_url($img) ?>",
"url":"<?= esc_url($url) ?>",
"offers":{"@type":"Offer","priceCurrency":"<?= esc_js($moeda) ?>","price":"<?= esc_js($preco) ?>"}
}</script>
<?php
});
10) Boas práticas e erros comuns
- Validação: teste cada página no Rich Results Test. Corrija erros/avisos.
- Correspondência: título, preço, autor, imagem e avaliações do schema devem existir no HTML.
- Atualização: mantenha datas de modificação corretas e imagens ≥ 1200 px para artigos.
- Granularidade: só use FAQ/HowTo se o conteúdo for realmente perguntas passo a passo.
- Reviews: evite self‑serving reviews em Organization (não elegíveis).
- Internacionalização: reflita idioma/região no conteúdo e no schema quando aplicável.
11) Workflow recomendado (rápido)
- Ativar schema base no plugin SEO (Organization, WebSite, Breadcrumbs).
- Revisar Article/BlogPosting automático por post.
- Adicionar FAQ/HowTo em posts que pedem rich results.
- E‑commerce: checar Product/Offer/Review do WooCommerce (ajustar se necessário).
- Validar amostras de páginas e monitorar Search Console → “Aparência da pesquisa”.
12) Checklist rápido
- Organization + WebSite + BreadcrumbList presentes.
- Posts com Article/BlogPosting correto (headline, image, dates, author).
- FAQ/HowTo somente quando fizer sentido e corresponder ao conteúdo.
- WooCommerce com preço, moeda, disponibilidade e avaliações consistentes.
- Sem duplicação entre plugins/tema/snippets.
- Validação sem erros e com avisos mínimos.
Perguntas Frequentes (FAQ)
Preciso usar microdados ou RDFa?
Não. O recomendado é JSON‑LD, mais limpo e fácil de manter. Posso ter vários blocos de JSON‑LD na mesma página?
Sim, desde que sejam consistentes e não conflitem (ex.: Article + Breadcrumb + Organization). Meu tema e meu plugin geram Article. O que faço?
Desative a saída de um deles. Duplicação pode causar erros e perda de elegibilidade. FAQ dá rich result imediato?
Não é garantido. O Google decide com base em qualidade, histórico e utilidade. Como monitorar impacto?
Use o Search Console: relatórios de “Aprimoramentos” e “Aparência da Pesquisa”, além de CTR/posições por página. Posso automatizar com ACF?
Sim, preencha campos e gere o JSON‑LD dinamicamente conforme o CPT (ver seção 9).
Tags
schema.org, dados estruturados, json-ld, wordpress, rank math, yoast, rich results, faq, howto, product schema, localbusiness, breadcrumbs, website, article, woocommerce, search console
“É necessário construir frases curtas. Toda otimização dividirá em, no mínimo, duas frases.”









