# Como corrigir o schema do Rank Math que não gera para Custom Post Types do ACF PRO no WordPress

O schema do Rank Math não gera para o Custom Post Type do ACF PRO quando o post type não esta público, não aparece na aba própria de Titles e Meta, ou tem o campo Schema Type definido como nenhum, deixando as páginas do CPT sem JSON-LD.

## O que é schema do Rank Math que não gera para CPT do ACF PRO?

O schema do Rank Math para CPT do ACF PRO depende de o plugin enxergar o Custom Post Type registrado e ter uma aba própria em Titles e Meta. Segundo a documentação do Rank Math, cada post type ganha uma seção com o ajuste Schema Type, que define o schema padrão emitido em todas as entradas daquele tipo. Quando você cria um Custom Post Type pelo ACF PRO (em ACF, Post Types) e abre uma entrada, espera que o Rank Math injete o JSON-LD no código fonte como faz em posts e páginas, mas a página do CPT sai sem nenhum bloco de schema.

O problema raiz quase sempre esta na visibilidade do post type ou no ajuste padrão de schema. O Rank Math so cria a aba de configuração para post types publicos com interface visivel, e so emite o schema padrão se o Schema Type daquela aba estiver definido como Article, Product ou outro valor concreto, e não como None. Se o CPT do ACF PRO foi registrado como não público, sem show_ui, ou o módulo Schema esta desativado, o Rank Math não tem onde ancorar o schema e o JSON-LD nunca aparece.

## Como identificar

- A página de uma entrada do Custom Post Type criado no ACF PRO sai sem nenhum bloco JSON-LD do Rank Math no código fonte (Ctrl+U e busca por application/ld+json não retorna o schema do conteúdo).
- Em Rank Math, Titles e Meta não existe uma aba própria para o seu Custom Post Type, apenas Posts, Páginas e outros tipos padrão.
- Ao testar a URL do CPT no Rich Results Test do Google ou no Schema Markup Validator, o relatório retorna que nenhum item estruturado foi detectado.
- O editor do Rank Math no CPT mostra a aba Schema vazia ou com o aviso de que nenhum schema esta atribuido aquele post type.
- Posts e páginas normais geram o schema corretamente, mas somente as entradas do post type registrado pelo ACF PRO ficam sem estrutura.

**Antes de começar:** Antes de alterar o registro do Custom Post Type ou mexer nos argumentos de visibilidade em código, faça um backup do site (arquivos e banco de dados) ou teste primeiro em um ambiente de staging, porque mudar public ou rewrite de um post type já indexado pode alterar URLs e afetar o ranking das páginas existentes.

## Como prevenir

- Registre Custom Post Types que devem ranquear sempre como publicos e com interface visivel, para o Rank Math criar a aba de Titles e Meta e gerar o schema desde o inicio.
- Ao criar um novo CPT, já defina o Schema Type adequado na aba de Titles e Meta antes de publicar conteúdo, evitando páginas no ar sem estrutura.
- Mantenha o módulo Schema do Rank Math ativo e padronize qual schema cada tipo de conteúdo usa, documentando a escolha para a equipe.
- Depois de registrar ou alterar um post type, valide uma entrada no Rich Results Test para confirmar que o JSON-LD esta sendo emitido como esperado.

Erros relacionados

- [Como corrigir o schema do Rank Math que não lê custom fields do ACF PRO](https://full.services/wp-fixer/corrigir-schema-rank-math-acf/)
- [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/)

## Causa

- O Custom Post Type foi registrado pelo ACF PRO com public definido como falso ou sem show_ui: o Rank Math so cria a aba de configuração em Titles e Meta para post types publicos com interface visivel, entao um CPT oculto nunca recebe o ajuste de Schema Type.
- A aba do post type existe em Rank Math, Titles e Meta, mas o campo Schema Type daquele CPT esta definido como None, e por isso o Rank Math não emite nenhum schema padrão para as entradas do tipo.
- O módulo Schema do Rank Math esta desativado em Rank Math, Painel, Módulos, entao o plugin nem chega a gerar o JSON-LD para qualquer post type, inclusive o CPT do ACF PRO.
- O Custom Post Type foi registrado no hook init com prioridade tardia ou depois do Rank Math montar suas configurações, fazendo o plugin não enxergar o tipo na hora de criar a aba de Titles e Meta.
- Uma condicao de exibicao (Display Conditions) de um schema customizado no Schema Generator esta restrita a posts ou páginas e não inclui o slug do CPT do ACF PRO, deixando aquele tipo de fora da regra de schema.

## Como resolver

1. Confirme que o módulo Schema esta ativo: Antes de tudo, garanta que o Rank Math esta autorizado a gerar JSON-LD. Sem o módulo Schema ligado, nenhum post type recebe estrutura, nem o CPT do ACF PRO.

```
Painel WP -> Rank Math SEO -> Painel (Dashboard) -> aba Módulos
Ative o módulo Schema (Structured Data) e salve
```

2. Torne o Custom Post Type público no ACF PRO: O Rank Math so cria a aba de Titles e Meta para post types publicos com interface visivel. Em ACF, abra o Post Type e ative as opções de visibilidade pública para o plugin passar a enxergar o tipo.

```
Painel WP -> ACF -> Post Types -> abra o seu Custom Post Type
Em Advanced Configuration -> Visibility, defina Public como Sim e Show In UI como Sim
Salve as alterações do Post Type
```

3. Defina o Schema Type na aba do post type: Com o CPT visivel, o Rank Math passa a exibir uma aba própria em Titles e Meta. Abra essa aba e troque o Schema Type de None para um schema concreto como Article, para o plugin emitir o JSON-LD padrão em todas as entradas.

```
Painel WP -> Rank Math SEO -> Titles e Meta
Selecione a aba do seu Custom Post Type na lista lateral
No campo Schema Type, escolha Article (ou o tipo adequado) em vez de None e salve
```

4. Limpe o cache e revalide a entrada: Schema fica em cache do site e de CDN. Limpe os caches, abra uma entrada do CPT e confira no código fonte se o bloco application/ld+json do Rank Math agora aparece.

```
Limpe o cache do plugin de cache e do CDN (ex.: WP Rocket, Cloudflare)
Abra uma entrada do CPT no navegador e use Ctrl+U para ver o código fonte
Procure por application/ld+json e confirme o bloco de schema do Rank Math
```

5. Valide o JSON-LD no Rich Results Test: Confirme que o schema gerado e valido aos olhos do Google. Cole a URL da entrada do CPT no Rich Results Test e verifique se o tipo aparece sem erros.

```
Acesse o Rich Results Test do Google e o Schema Markup Validator
Cole a URL pública de uma entrada do Custom Post Type
Confirme que o schema escolhido e detectado sem erros nem avisos criticos
```


## Código

```php
<?php
// Garante que o CPT do ACF PRO seja publico e visivel a tempo do Rank Math.
add_action( 'init', 'full_force_cpt_public_para_rank_math', 5 );
function full_force_cpt_public_para_rank_math() {
    global $wp_post_types;
    $post_type = 'projeto'; // troque pelo slug do seu CPT do ACF PRO
    if ( isset( $wp_post_types[ $post_type ] ) ) {
        $wp_post_types[ $post_type ]->public              = true;
        $wp_post_types[ $post_type ]->publicly_queryable   = true;
        $wp_post_types[ $post_type ]->show_ui             = true;
        $wp_post_types[ $post_type ]->show_in_rest        = true;
    }
}
```

## Perguntas frequentes

### Por que o Rank Math não gera schema para o meu Custom Post Type do ACF PRO

Na maioria dos casos o post type foi registrado como não público ou sem interface visivel, entao o Rank Math não cria a aba de configuração em Titles e Meta e não tem onde definir o Schema Type. Torne o CPT público no ACF e defina o Schema Type da aba para um valor concreto.

### Onde fica o ajuste de schema por post type no Rank Math

Em Rank Math SEO, Titles e Meta, cada post type público ganha uma aba própria com o campo Schema Type, que define o schema padrão emitido em todas as entradas daquele tipo. Para o CPT do ACF PRO, troque esse campo de None para Article ou outro tipo adequado.

### Preciso do módulo Schema ativo para o CPT receber JSON-LD

Sim. O Rank Math so emite structured data com o módulo Schema ligado em Rank Math, Painel, Módulos. Com o módulo desativado, nenhum post type recebe JSON-LD, inclusive o Custom Post Type criado pelo ACF PRO.

### O Custom Post Type precisa ser público para ter schema

Para o Rank Math gerenciar títulos, meta e schema, o post type precisa ser público e ter interface visivel, pois o plugin so cria a aba de configuração para tipos visiveis. Um CPT oculto pode existir, mas não recebera a aba de Schema Type.

### Como faço o schema do CPT usar valores de campos do ACF

O Schema Type padrão da aba cobre o schema base. Para mapear valores de campos ACF em propriedades do schema, use o Schema Generator do Rank Math no editor da entrada e preencha as propriedades com variaveis ou os valores dos campos personalizados.

### Alterar o post type para público muda as URLs das entradas

Pode mudar, porque visibilidade e rewrite influenciam o permalink do post type. Se as entradas já estão indexadas, teste em staging e configure redirecionamentos se a URL mudar, para não perder o ranking já conquistado.

### Por que so o CPT fica sem schema e posts e páginas funcionam

Posts e páginas já vem com aba e Schema Type configurados por padrão no Rank Math. O Custom Post Type do ACF PRO so passa a ter essa aba quando e público, e o Schema Type comeca como None até você definir, por isso so ele fica sem estrutura.

### Registrar o CPT em código em vez de pelo ACF resolve o schema

O que importa e o post type ser registrado como público e com show_ui antes do Rank Math montar suas configurações, independente de vir do ACF ou de código. Registre no hook init e garanta as flags de visibilidade para o Rank Math criar a aba de schema.

**Fonte:** [Rank Math KB — Titles and Meta Settings](https://rankmath.com/kb/titles-and-meta/)
