Hierarquia de Modelos de Temas de Blocos do WordPress
A hierarquia completa de modelos de temas de blocos (FSE): para cada tipo de requisição, a lista ordenada de modelos que o WordPress procura, do mais específico primeiro, recorrendo ao index.html. O equivalente da era de blocos ao clássico diagrama de hierarquia.
Para cada requisição, o WordPress procura por estes modelos em ordem — do mais específico primeiro — e para no primeiro que existir na pasta /templates do seu tema. A cadeia sempre termina em index.html.
Página inicial
A página inicial do site, esteja ela configurada para exibir os posts mais recentes ou uma página estática.
- front-page.html
- home.html
- index.html
front-page.html vence independentemente da escolha em Configurações → Leitura. Se a página inicial for uma página estática e não existir front-page.html, ela cai na cadeia de página estática, e não em home.html.
Índice de posts do blog
A página que lista seus posts mais recentes (a "página de posts" em Configurações → Leitura).
- home.html
- index.html
Post individual
Um post individual do blog.
- single-post-{slug}.html
- single-post.html
- single.html
- singular.html
- index.html
Tipo de post personalizado individual
Uma entrada individual de um tipo de post personalizado (por exemplo, um "livro").
- single-{post-type}-{slug}.html
- single-{post-type}.html
- single.html
- singular.html
- index.html
Para um tipo de post "book" com slug "dune": single-book-dune.html, depois single-book.html, depois single.html.
Página estática
Uma página comum do WordPress.
- page-{slug}.html
- page-{id}.html
- page.html
- singular.html
- index.html
Página com modelo personalizado
Uma página à qual foi atribuído um modelo personalizado no painel Modelo do editor.
- {custom-template}.html
- page-{slug}.html
- page-{id}.html
- page.html
- singular.html
- index.html
Os modelos personalizados são declarados no array customTemplates do theme.json e ficam em /templates. O modelo atribuído vence toda a cadeia de página.
Arquivo de categoria
O arquivo que lista os posts de uma categoria.
- category-{slug}.html
- category-{id}.html
- category.html
- archive.html
- index.html
Arquivo de tag
O arquivo que lista os posts com uma determinada tag.
- tag-{slug}.html
- tag-{id}.html
- tag.html
- archive.html
- index.html
Arquivo de taxonomia personalizada
O arquivo de um termo em uma taxonomia personalizada.
- taxonomy-{taxonomy}-{term}.html
- taxonomy-{taxonomy}.html
- taxonomy.html
- archive.html
- index.html
Arquivo de autor
O arquivo com os posts de um autor.
- author-{nicename}.html
- author-{id}.html
- author.html
- archive.html
- index.html
Arquivo de data
Um arquivo por ano / mês / dia.
- date.html
- archive.html
- index.html
Arquivo de tipo de post
O índice de arquivo de um tipo de post personalizado que tem has_archive definido.
- archive-{post-type}.html
- archive.html
- index.html
Resultados da busca
A página de resultados de uma busca no site.
- search.html
- index.html
404 (não encontrado)
Exibida quando nenhum conteúdo corresponde à URL.
- 404.html
- index.html
Página de anexo
A página de um único anexo de mídia.
- attachment.html
- single.html
- singular.html
- index.html
Muitos sites desativam completamente as páginas de anexo (são conteúdo raso). Se você mantiver essas páginas, esta é a cadeia.
Página de política de privacidade
A página definida como a política de privacidade do site em Configurações.
- page-privacy-policy.html
- privacy-policy.html
- page.html
- singular.html
- index.html
Como isso difere da hierarquia clássica (PHP)
- Os modelos são arquivos .html em /templates, e não arquivos .php na raiz do tema. Não existe single.php — é single.html.
- As regiões reutilizáveis (cabeçalho, rodapé) são PARTES de modelo em /parts, referenciadas com o bloco wp:template-part, e não com chamadas PHP get_header() / get_footer().
- Não há cadeia de get_template_part() nem get_header()/get_footer(). A composição é feita com o bloco Parte de Modelo dentro dos arquivos .html.
- index.html é OBRIGATÓRIO. Um block theme sem templates/index.html não é um block theme válido — é o fallback final obrigatório para todas as rotas acima.
- O tema é declarado como um block theme pela PRESENÇA de templates/index.html mais um theme.json, e não por qualquer flag de cabeçalho.
- Você pode editar qualquer um desses modelos no Editor de Site (Aparência → Editor) e salvar as alterações no banco de dados — o que passa a SOBREPOR os arquivos do tema até você limpar a personalização. Isso surpreende quem está tentando entender "por que minha alteração no modelo não faz nada".