Uma das melhores características do WordPress é sua poderosa capacidade de modelagem. Ao manipular alguns arquivos, você pode criar temas complexos com diferentes layouts e opções visuais para diferentes tipos de conteúdo. Isto é possível graças ao modelo complexo de hierarquia do WordPress, que oferece um imenso controle para o desenvolvedor sobre a apresentação de conteúdo e layouts.

Neste artigo, vamos aprender sobre a hierarquia de template WordPress, como ele funciona, e como isso afeta o seu blog.

O que é hierarquia de template no WordPress?

Para entender hierarquias de templates, é preciso primeiro entender como WordPress renderiza páginas.

Vamos considerar que você tem um blog WordPress, MeuBlog.com.br. Você deseja acessar uma determinada página em seu blog com o URL:

http://meublog.com.br/category/noticias/

Quando você digita essa URL no seu navegador, o WordPress irá entrar em ação para determinar que tipo de página está sendo solicitada. WordPress tem páginas diferentes para diferentes tipos de conteúdo – uma página de arquivo, uma página inicial, uma página de pesquisa, etc. Uma vez que o  WordPress determina o tipo de página, ele vai tentar encontrar um modelo para essa página em particular.

Neste exemplo, WordPress sabe que você está solicitando uma página de categoria (perceba que há um /category/ na URL). Mas você não está solicitando apenas qualquer página da categoria – você está solicitando uma categoria específica, noticias. Assim, o WordPress irá tentar encontrar um modelo que corresponde a essa categoria específica.

Vamos por etapas:
  1. WordPress procurará primeiro por um modelo para essa categoria particular. Cada categoria tem uma identificação única. No exemplo acima, se o ID da categoria é 5, ele vai tentar encontrar um arquivo category-5.php como template.
  2. Se o WordPress não puder encontrar o arquivo da category-5.php, ele subirá um nível e usará o template category.php para processar a página.
  3. Se o template category.php não estiver disponível, o WordPress usará o template archive.php (uma vez que uma categoria não é nada mais que um tipo de archive).
  4. Se archive.php não puder ser encontrado, ele vai cair de volta no template index.php por padrão.

Assim, a progressão é de template específico para modelos genéricos. Para o exemplo acima, isto pode ser representado como se segue:

category-5.php => category.php => archive.php => index.php

Existem diferentes hierarquias para diferentes tipos de página. Por exemplo, se você tem a sua página em MeuBlog.com.br, o WordPress terá o seguinte caminho para determinar qual o template a ser usado:

WordPress vai procurar primeiro o template de front-page.php que servirá como primeira página.

Se o WordPress não conseguir encontrar front-page.php, ele procurar pelo próximo nível de template – home.php.

Se ele não puder encontrar home.php, finalmente recorrerá ao uso da index.php por padrão.

Não importa o tipo de conteúdo, o WordPress sempre usará index.php se não puder encontrar qualquer outro template. Isto significa que você poderia ter um site totalmente funcional (embora com má usabilidade) com apenas o arquivo de template index.php.

Hierarquia de Template WordPress por tipo de conteúdo

WordPress pode detectar automaticamente o tipo de conteúdo que precisa ser mostrado e procurar o tipo de template apropriado. Abaixo, vamos dar uma olhada nas hierarquias para alguns tipos de conteúdo selecionados:

Página de Categorias

Como mencionado acima, uma categoria é um tipo especial de arquivo. WordPress utiliza a seguinte hierarquia ao exibir páginas de categoria:

  1. Se você tem um slug específico de categoria ou nome (digamos, noticias.php), WordPress fará uso deste arquivo em primeiro lugar. Você pode editar os slugs de categoria na página da categoria em seu painel WP.
  2. Cada categoria também tem um ID da categoria, independentemente de você ter dado um slug ou não. WordPress cria a ID da categoria automaticamente. Se WP não conseguir encontrar um arquivo com o slug da categoria, ele usará o ID da categoria, algo como categoria-32.php.
  3. Se o template de ID da categoria não existir, WordPress usará o template category.php por padrão.
  4. Se ele não conseguir encontrar um template de categorias, ele usará o template básico archive.php.
  5. Se ele não pode encontrar até mesmo o template archive.php, ele usará para o template index.php.

O caminho é o seguinte:

category-slug.php => category-ID.php => category.php => archive.php => index.php

Páginas de Autor

Para páginas de autor, o WordPress tem o seguinte caminho:

  1. O primeiro template que o WordPress procura é o nome do autor, como author-julius.php
  2. Se não conseguir encontrar o nome do autor, ele vai procurar pelo modelo autor ID (como author-2.php). Como em categorias, o WordPress gera um ID automaticamente.
  3. Se o template author-id.php não existir, ele usará template genérico author.php.
  4. Se até mesmo o template author.php estiver faltando, ele usará o template básico archive.php. Lembre-se que a página de autor é também um tipo de arquivo.
  5. Finalmente, o WordPress recorrerá ao index.php se não puder encontrar o template archive.php.

Isto pode ser representado como se segue:

autor-name.php => autor-id.php => author.php => archive.php => index.php

Páginas individuais e Posts

Até agora, nós olhamos o tipo de conteúdo archive. E sobre páginas simples e posts individuais?

Esta é a hierarquia de posts padrão:

  1. Para um post padrão, o WordPress irá primeiro tentar encontrar o single-post.php.
  2. Se este estiver ausente, ele utilizará o template genérico single.php.
  3. Se até mesmo single.php estiver faltando, ele usará index.php
single-post.php => single.php => index.php

Mas e se você tem um tipo de post personalizado? Neste caso, WordPress procurará primeiro por um modelo personalizado, single-postpersonalizado.php, desta forma:

single-posttype.php => single.php => index.php

A hierarquia para páginas estáticas individuais, no entanto, é um pouco diferente:

  1. WordPress vai ver primeiro se você estiver usando um modelo personalizado para a página estática. Este será custom.php (veremos em breve um artigo sobre templates personalizados para páginas).
  2. Se você estiver usando a forma de template padrão, ele buscará o arquivo de template page-slug.php.
  3. Em seguida, ele procurar pelo template page-id.php.
  4. O próximo template será page.php
  5. Finalmente, ele vai usar index.php
custom.php => page-slug.php => page-id.php => page.php => index.php

A documentação Oficial do WordPress tem um fluxograma da hierarquia de templates para diferentes tipos de conteúdo. Acesse a este fluxograma em alta definição aqui.