Introdução à hierarquia de modelos do WordPress

Publicados: 2019-12-11

Uma das principais perguntas que os usuários do WordPress fazem em algum momento de sua vida é a seguinte: como os temas do WordPress conseguem mostrar páginas diferentes dependendo do conteúdo que estamos vendo?

A questão, além de totalmente legítima, é muito interessante. O WordPress é capaz de identificar qual conteúdo está prestes a renderizar e, dependendo do tipo, usar um modelo ou outro. Os temas do WordPress nada mais são do que um conjunto de templates específicos para cada tipo de conteúdo com algum JavaScript para elementos dinâmicos e CSS para estilos e cores.

Perfeito, mas… como os templates do WordPress realmente funcionam? É isso que veremos passo a passo ao longo deste post.

Antes de começarmos, porém, deixe-me mostrar uma foto com a resposta para esta pergunta:

Hierarquia de templates do WordPress
Hierarquia de modelos do WordPress.

Esta é a hierarquia de templates do WordPress. Você pode encontrar todas as informações sobre isso no WordPress Codex, a documentação oficial. Você pode até interagir com essa hierarquia neste site legal.

Basicamente, o WordPress usa uma hierarquia de modelos para renderizar seu conteúdo. Ou seja, o WordPress pesquisa dentro do tema que você ativou para um arquivo PHP específico. Se existir, o WordPress renderiza o conteúdo usando esse arquivo, que chamamos de template. Caso contrário, o WordPress procura o próximo modelo mais genérico dentro da hierarquia. Se existir, o WordPress o usará. Caso contrário, o WordPress procura o próximo modelo na hierarquia… e assim por diante. Se o WordPress não encontrar um arquivo de modelo específico em seu tema, ele usa o arquivo index.php padrão, o mais genérico de todos os modelos.

Agora, vamos nos aprofundar mais na hierarquia de modelos de alguns dos conteúdos mais comuns do WordPress.

Modelos de página

Vamos ver os modelos que o WordPress usa para renderizar páginas e tipos de conteúdo simples.

Postagens e tipos de postagem personalizados

O WordPress analisa os seguintes arquivos PHP em seu tema para renderizar uma postagem de blog ou um tipo de postagem personalizada:

  1. single-{post-type}-{slug}.php : se você quiser um template específico para um post específico ou um tipo de post específico, você deve criar este arquivo PHP em seu tema. Seu nome inclui o nome do tipo de postagem ( {post-type} ), que pode ser post ou qualquer outra coisa ( product , se você usar WooCommerce). E você também deve digitar o slug ou permalink, chame como quiser, no nome do template. Por exemplo, se eu quiser usar um template específico para este post, eu teria que criar o arquivo single-post-introduction-to-the-wordpress-template-hierarchy.php .
  2. single-{post-type}.php : se quisermos afetar todo o conteúdo de um tipo de post específico (todos os posts ou todos os produtos), usaremos este template, cujo nome inclui apenas o nome do tipo de post.
  3. single.php : WordPress usa este modelo para renderizar qualquer conteúdo único (um post específico, um produto específico, etc).
  4. singular.php : este é outro modelo de nível superior para renderizar conteúdo único de qualquer tipo.
  5. index.php : se nenhum dos itens acima foi encontrado, o WordPress usa este template genérico para renderizar seu conteúdo.

Lembre-se que no diretório de temas do WordPress você tem milhares de exemplos de temas do WordPress à sua disposição. Eu recomendo que você baixe um e tente, como um exercício de aprendizado, inspecionar seus arquivos PHP e identificar os modelos que acabei de apresentar.

Ao fazer isso, você pode entender quais modelos eles usam dentro da hierarquia de modelos do WordPress e ver qual conteúdo cada um desses modelos possui. Sem dúvida, se você quiser aprender sobre os temas do WordPress, isso é algo obrigatório. Além disso, é grátis!

Páginas normais

Assim como nas postagens e outros tipos de postagem, o WordPress usa uma hierarquia de modelos para renderizar as páginas:

  1. Modelo selecionado: se na caixa de atributos da página ao editar uma página você selecionar um modelo específico, ele sempre terá prioridade sobre todos os outros. Você pode aprender a criar modelos personalizados aqui.
  2. page-{slug}.php : se você quiser que uma página específica tenha seu próprio template, crie esse template em um arquivo PHP que tenha o slug da página no nome.
  3. page-{id}.php : você também pode usar diretamente o ID da página do WordPress onde o modelo é aplicado.
  4. page.php : este modelo se aplica a todas as páginas do WordPress, a menos que um dos modelos anteriores na hierarquia já tenha sido aplicado.
  5. singular.php : o modelo singular é o modelo padrão para todas as páginas, postagens, produtos e assim por diante. Este modelo raramente será aplicado, pois a maioria dos temas no WordPress já inclui um modelo page.php .
  6. index.php : como sempre, este é o modelo de fallback padrão do WordPress.

Agora tente verificar novamente o tema que você baixou antes e você verá que agora você entende um pouco mais os outros arquivos que aparecem lá. Certamente agora você pode identificar arquivos PHP para modelos de página.

Páginas Especiais

No WordPress existem outras páginas especiais que também fazem uso de templates específicos para renderizar o conteúdo. Um exemplo disso é a página principal do site. Lembre-se que a página principal está selecionada nas Configurações do WordPress, dentro do submenu Leitura . A seguinte hierarquia de modelo é usada para essa página:

  1. front-page.php : se você usar uma página estática como a página principal no WordPress, ele tentará primeiro aplicar o modelo front-page.php .
  2. home.php : se o template anterior não for encontrado, o WordPress tenta usar este template. Este modelo também é usado se, em vez de selecionar uma página estática como página principal, você selecionou a opção de mostrar suas postagens mais recentes.
  3. index.php : novamente, o template padrão está sempre presente.

A página que mostra os resultados da pesquisa do seu WordPress também é uma página especial que pode ter seu próprio modelo. Para fazer isso, você pode usar o modelo search.php . Se o seu tema não o definir, index.php será usado normalmente.

Por fim, a página exibida quando seu site retorna um erro 404 também pode ser configurada com um modelo específico do WordPress. Você tem que criar o arquivo 404.php no seu tema e então este template será aplicado.

Modelos para Arquivos

Até agora, vimos modelos para conteúdo único (exceto no caso de resultados de pesquisa). Mas no WordPress também existem arquivos, que podem renderizar mais de um elemento em uma página. Vamos ver qual hierarquia de templates o WordPress usa neste caso.

Categorias e Tags

O WordPress usa a seguinte hierarquia de modelos para categorias:

  1. category-{slug}.php : este template é usado para renderizar a lista de conteúdo (geralmente posts) que pertencem a uma categoria específica. Em particular, será usado ao renderizar a categoria cujo slug aparece no nome do arquivo PHP.
  2. category-{id}.php : se você preferir usar IDs de categoria em vez de slugs, você também pode fazê-lo. Por exemplo, se você deseja aplicar um modelo à categoria 13, crie o arquivo de modelo com o nome category-13.php .
  3. category.php : o modelo padrão para todas as categorias.
  4. archive.php : este é o modelo mais genérico para arquivos no WordPress.
  5. index.php : novamente, se o seu tema não incluir um modelo mais específico, o WordPress usará esse arquivo como padrão.

A seguinte hierarquia de modelo é usada para tags:

  1. tag-{slug}.php : se a tag se chama entrevista , podemos usar o template tag-interview.php caso queiramos criar um template específico para essa tag no WordPress.
  2. tag-{id}.php : também podemos definir o template através do ID da tag.
  3. tag.php : como com category.php , este é o modelo genérico para tags.
  4. archive.php : novamente, este template será usado se nenhuma das opções acima existir.
  5. index.php : como sempre, este é o modelo de fallback.

Tipos de postagem personalizados e taxonomias personalizadas

Se tivermos tipos de conteúdo personalizados, podemos usar o template archive-{post_type}.php onde post_type é o slug do tipo de postagem personalizado. Isso renderizará a lista de conteúdo para esse tipo de postagem.

Para taxonomias personalizadas, o WordPress usa a seguinte hierarquia de modelos:

  1. taxonomy-{taxonomy}-{term}.php : se você tem uma taxonomia personalizada chamada videogames no WordPress e quer criar um template com um design específico para o termo esportes dentro dessa taxonomia, você terá que criar o arquivo taxonomy-videogames-sports.php para usar esse modelo.
  2. taxonomy-{taxonomy}.php : se você quiser usar o mesmo template para todos os termos de taxonomia, basta usar taxonomy-videogames.php , no exemplo anterior.
  3. taxonomy.php : este é o modelo padrão para todas as taxonomias.
  4. archive.php : se nenhum dos modelos acima existir, isso se aplica.
  5. index.php : novamente, este é o modelo de fallback padrão.

Com todas essas explicações você já deve ter tudo o que precisa para criar e identificar templates em seus temas WordPress.

Resumindo

Entender a hierarquia dos templates do WordPress é fundamental para poder entender os temas e até mesmo desenvolver o seu próprio. Não custa nada dar uma olhada nisso e saber como funciona para ganhar confiança quando você começa a modificar o código PHP do tema que você usa em nosso WordPress.

Existem alguns outros modelos, mas menos usados. De qualquer forma, lembre-se de que você sempre pode verificar a documentação do WordPress Codex. Lá você encontrará tudo o que não foi explicado aqui.

O que você acha de tudo isso? Você ainda está usando modelos para o seu conteúdo WordPress ou já está construindo todos os designs com blocos? Não se esqueça de me deixar um comentário abaixo se você chegou ao final do post - eu adoraria saber como você usa os modelos do WordPress!

Imagem em destaque por Edvard Alexander Rlvaag no Unsplash .