# Como corrigir o schema de produto do Rank Math no WooCommerce

O schema de produto do Rank Math no WooCommerce fica invalido quando o markup sai sem offers, review ou aggregateRating, quando aparece em páginas de arquivo, ou quando o WooCommerce duplica a marcacao Product.

## O que é o erro de schema produto Rank Math no WooCommerce?

O schema produto do Rank Math e a marcacao JSON-LD do tipo Product que o Rank Math gera automaticamente para cada produto do WooCommerce, lendo preco, disponibilidade, SKU, imagem e avaliacoes diretamente dos campos do produto. O erro acontece quando esse JSON-LD sai incompleto ou duplicado: o Google Rich Results Test e o Search Console acusam que a marcacao Product não tem os campos obrigatorios, ou que existe mais de um bloco Product na mesma página. O resultado e que o produto perde elegibilidade para rich snippet (preco, estrelas e disponibilidade na SERP) e some dos resultados de produto do Google.

## Como identificar

- No Google Rich Results Test ou no Search Console aparece o aviso 'Either offers, review, or aggregateRating should be specified' no item Product
- O relatório de Resultados de produtos do Search Console mostra os produtos com status 'Invalido' e itens em 'Não elegivel'
- O Rich Results Test detecta dois blocos Product na mesma URL (um do Rank Math e um do WooCommerce), gerando 'Duplicate field' ou itens repetidos
- Páginas de categoria e a página da loja aparecem com schema Product no validador, quando deveriam ter apenas listagem
- No painel Schema do produto o Snippet aparece como 'None' ou com tipo diferente de Product, e o JSON-LD não traz o objeto offers

**Antes de começar:** Faca backup do functions.php do tema filho antes de adicionar o filtro do passo 5. Um erro de sintaxe nesse arquivo derruba o site inteiro com tela branca.

## Como prevenir

- Fixe o Schema Type como Product no post type Produto antes de cadastrar a loja, para nenhum produto sair sem marcacao
- Mantenha a opção Remove Snippet Data ativa nas categorias e tags de produto desde o inicio
- Cadastre preco regular e imagem destacada em todo produto, para o objeto offers nunca sair vazio
- Após qualquer atualização do Rank Math ou do WooCommerce, rode uma URL de produto no Rich Results Test para confirmar que não surgiu schema duplicado
- Use um único plugin de SEO responsável pelo schema; rodar Rank Math e outro plugin de SEO ao mesmo tempo recria a duplicacao

Erros relacionados

- [Como corrigir marcação inválida no Schema Generator do Rank Math](https://full.services/wp-fixer/corrigir-schema-generator-rank-math/)
- [Como corrigir o FAQ Schema do Rank Math que não valida](https://full.services/wp-fixer/corrigir-faq-schema-rank-math/)
- [Como corrigir produto do WooCommerce com página em branco](https://full.services/wp-fixer/corrigir-produto-branco-woocommerce/)

## Causa

- O produto não tem avaliacoes nem preco definido, entao o Rank Math monta o bloco Product sem offers e sem aggregateRating, e o Google exige pelo menos um dos três (offers, review ou aggregateRating).
- O WooCommerce mantem ativa a própria marcacao nativa pela função woocommerce_structured_data, que injeta um segundo bloco Product na página e colide com o JSON-LD do Rank Math.
- O tipo de Schema padrão do post type Produto não esta definido como Product em Titles and Meta, entao o Rank Math não gera o bloco Product correto.
- A opção Remove Snippet Data esta desligada nas Categorias de produto, fazendo o schema Product vazar para páginas de arquivo (loja, categoria, tag), o que viola a regra do Google de um produto por página.
- O produto esta sem imagem destacada ou com o campo SKU vazio, deixando o JSON-LD do Product sem campos que o Search Console reporta como ausentes.
- O módulo Schema do Rank Math foi desativado no Dashboard, entao nenhum JSON-LD Product e emitido para os produtos.

## Como resolver

1. Identifique o erro exato na URL do produto: Rode a URL do produto no Rich Results Test do Google e leia qual campo o validador aponta como ausente ou duplicado, antes de mexer em qualquer configuração. O aviso de offers ou review pede preco ou avaliacao; o item Product repetido indica schema duplicado.

```
https://search.google.com/test/rich-results
```

2. Defina o tipo de schema padrão do post type Produto: No painel do Rank Math, abra as configurações do post type Produto e fixe o tipo de schema como Product, para que todo produto novo já nasca com a marcacao correta.

```
Rank Math SEO -> Titles and Meta -> Products -> Schema Type -> Product
```

3. Garanta offers, review ou aggregateRating no produto: Preencha o preco regular do produto na aba Geral para gerar o objeto offers, ou ative e colete avaliacoes para gerar aggregateRating. O Google exige pelo menos um desses três campos para validar o Product.

```
Produtos -> editar produto -> Dados do produto -> Geral -> Preco regular
```

4. Remova o schema Product das páginas de arquivo: Ligue a opção que tira a marcacao das categorias e da loja, porque schema Product so vale em página de produto único. Isso elimina o aviso disparado pelas páginas de categoria.

```
Rank Math SEO -> Titles and Meta -> Product categories -> Remove Snippet Data -> Ativar
```

5. Elimine o schema duplicado do WooCommerce: Quando o validador acusa dois blocos Product, desative a marcacao nativa do WooCommerce com o filtro abaixo no functions.php do tema filho, deixando apenas o Rank Math responsável pelo JSON-LD do produto.

```
add_filter( 'woocommerce_structured_data_type_for_page', '__return_empty_array' );
```

6. Revalide e limpe o cache: Limpe o cache do site e da CDN, rode de novo o Rich Results Test e peca a reindexacao da URL no Search Console para o Google reprocessar o schema corrigido.

```
https://search.google.com/search-console
```


## Código

```php
<?php
// functions.php do tema filho — desativa a marcacao Product nativa do WooCommerce,
// deixando apenas o Rank Math responsavel pelo JSON-LD do produto.
add_filter( 'woocommerce_structured_data_type_for_page', function ( $types ) {
    // remove o tipo 'product' da marcacao nativa do WooCommerce na pagina de produto
    return array_diff( (array) $types, array( 'product' ) );
} );
```

## Perguntas frequentes

### Por que o Search Console diz que falta offers, review ou aggregateRating no meu produto

Porque o produto saiu sem preco e sem avaliacoes, entao o Rank Math montou o bloco Product sem nenhum desses três campos. O Google exige pelo menos um. Preencha o preco regular do produto ou colete avaliacoes para gerar offers ou aggregateRating e o aviso some na próxima validação.

### Como o Rank Math monta o schema de produto do WooCommerce

O Rank Math le automaticamente os dados do produto cadastrado no WooCommerce e gera o JSON-LD do tipo Product, puxando preco, disponibilidade, SKU, imagem, categoria e a avaliacao agregada das resenhas. Você não precisa preencher o schema a mao, basta manter os campos do produto completos.

### Por que aparecem dois blocos Product na mesma página

O WooCommerce tem marcacao estruturada nativa própria e o Rank Math gera a dele, entao as duas saem juntas e o validador acusa Product duplicado. Desative a marcacao nativa do WooCommerce com o filtro woocommerce_structured_data_type_for_page para deixar so o Rank Math no controle do schema.

### Preciso remover o schema das páginas de categoria do WooCommerce

Sim. O schema Product so vale em página de produto único, segundo as diretrizes do Google. Em Titles and Meta nas Categorias de produto, ative Remove Snippet Data para tirar a marcacao das páginas de loja, categoria e tag, que são listagens e não um produto isolado.

### O schema de produto volta sozinho depois que eu corrijo

Não. Depois de definir o Schema Type como Product, preencher os campos e remover a duplicacao, a marcacao fica estavel. O risco de voltar e instalar outro plugin de SEO ou reativar a marcacao nativa do WooCommerce, que recria a duplicacao. Por isso a revalidacao periodica e recomendada.

### Quanto tempo o Google leva para reconhecer o schema corrigido

O Rich Results Test mostra a correção na hora, porque le a página ao vivo. Já o relatório de Resultados de produtos do Search Console pode levar de alguns dias a semanas para reprocessar. Acelere pedindo a reindexacao da URL pela ferramenta de inspecao de URL do Search Console.

### O aviso de priceValidUntil ainda aparece nas versões atuais

Nas versões recentes o Rank Math adiciona automaticamente um valor padrão de priceValidUntil, o último dia do ano seguinte, entao esse aviso específico não deve mais aparecer. Se ainda aparece, atualize o Rank Math para a versão mais recente e revalide a URL.

**Fonte:** [Rank Math KB — Either offers, review, or aggregateRating should be specified](https://rankmath.com/kb/either-offers-review-or-aggregaterating-should-be-specified/)
