Como corrigir o schema do Rank Math que não gera para Custom Post Types do ACF PRO no WordPress
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.
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.
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
- 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 - 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 - 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 - 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 - 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
<?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;
}
}














