Codex

Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

pt-br:Hierarquia de Modelos WordPress

Introdução

Os modelos WordPress se encaixam como peças de um quebra-cabeça para gerar as páginas em seu site. Alguns modelos são usados em todas as páginas da web (como o cabeçalho e o rodapé e estilos, por exemplo), enquanto outros são usados somente em condições específicas.

Este artigo procura responder à seguinte pergunta:

Qual arquivo de modelo (s) o WordPress usará quando ele exibe um certo tipo de página?

O Modelo de hierarquia de arquivo

A idéia geral

O WordPress utiliza Query String - Informações contidas no interior de cada link em seu site - para decidir qual o modelo ou conjunto de modelos serão utilizados para exibir a página.

Primeiro, o WordPress partidas cadeia de consulta para todos os tipos de consulta - ou seja, ele decide que tipo de página (uma página de busca, uma página da categoria, a home page, etc) está sendo solicitado.

Os modelos são então escolhidos - e o conteúdo da página web é gerada - na ordem sugerida pela Hierarquia de Temas WordPress, dependendo de que modelos estão disponíveis num determinado Tema WordPress.

Exemplos

Se o seu blog está em http://exemplo.com/wp/ e um visitante clica em um link para uma página da categoria como http://exemplo.com/wp/category/carros/, WordPress procura por um arquivo de modelo no diretório do tema atual que corresponde ao ID da categoria.

Se a categoria de identificação é 4, o WordPress procura por um arquivo de modelo category-4.php . Se estiver em falta, o WordPress procura por um arquivo de modelo genérico, category.php .

Se este arquivo não existe o WordPress procura por um arquivo de modelo genérico, archive.php. Se não exisitir, então ele procura pelo arquivo principal, index.php .

Se um visitante vai para sua homepage na http://exemplo.com/wp/, o WordPress primeiro determina se há uma Página estática. Se uma página estática foi definida, o WordPress exibe primeiro a página principal e depois esta página definida, de acordo com o modelo de hierarquia.

Se uma página estática não foi definida, então o WordPress procura por um arquivo home.php e o usa para gerar a página solicitada.

Se não há arquivo home.php , o WordPress procura por um arquivo chamado index.php no diretório do tema ativo, e usa esse modelo para gerar a página.

Visão geral

O seguinte diagrama mostra quais arquivos de modelo são chamados para gerar uma página do WordPress com base na Hierarquia de Temas WordPress.

Estrutura da Hierarquia de Temas WordPress
{{{2}}}


A Hierarquia de Modelos em detalhe

As seções seguintes descrevem a ordem na qual os arquivos de modelo são chamados pelo WordPress, para cada tipo de consulta.

Página Inicial (Home)

  1. home.php
  2. index.php

Página Inicial (definida pelo usuário)

  1. front-page.php - usado tanto para Seus posts mais recentes e Uma página estática configurado em Configurações → Leitura.
  2. Quando uma página será usada como Página Inicial, se configurado em Configurações → Leitura.
  3. Quando uma página de posts será usada como Página Inicial, se configurado em Configurações → Leitura.

Post único

  1. single-{post_type}.php - Se há um tipo personalizado chamado livro, o arquivo para mostrar um item só é chamado single-livro.php.
  2. single.php
  3. index.php

Página

Ao ver uma página fixa.

  1. modelo de página - Se a página tem um modelo de página definido.
  2. page-{slug}.php - Se o slug da página é sobre-mim, o WordPress vai procurar um arquivo chamado page-sobre-mim.php
  3. page-{id}.php - Se a ID de tal página é 6, o WordPress procurará por page-6.php
  4. page.php
  5. index.php

Categoria

Quando se clica no link para uma categoria.

  1. category-{slug}.php - Se o slug de uma categoria for dicas, então o WordPress procurará por category-dicas.php
  2. category-{id}.php - Se o IDde uma categoria for 12, então o WordPress procuraráa por category-12.php
  3. category.php
  4. archive.php
  5. index.php

Tag

  1. tag-{slug}.php - Se o slug de uma tag for especies, então o WordPress procurará por tag-especies.php
  2. tag-{id}.php - Se ID de uma tag for 6, então o WordPress procurará por tag-6.php
  3. tag.php
  4. archive.php
  5. index.php

Taxonomias Personalizadas

Mostra publicações que usam a taxonomia.

  1. taxonomy-{taxonomia}-{termo}.php - Se a taxonomia for genero e um termo dessa taxonomia for romance, o WordPress procurará por taxonomy-genero-romance.php. No caso de Formatos de Post, a taxonomia é 'post_format' e seus termos são 'post-format-{formato}. Exemplo: taxonomy-post_format-post-format-link.php
  2. taxonomy-{taxonomia}.php - Se a taxonomia for cor, o WordPress procurará por taxonomy-cor.php.
  3. taxonomy.php
  4. archive.php
  5. index.php

Tipos de Posts Personalizados

  1. single-{post_type}.php - Se o tipo do post for carros, então o WordPress procurará por single-carros.php
  2. single.php
  3. index.php

Autor

  1. author-{nicename}.php - Se o "nicename" do autor for dianakc, o WordPress procurará por author-dianakc.php
  2. author-{id}.php - Se a ID de um autor for 10, o WordPress procurará por author-10.php
  3. author.php
  4. archive.php
  5. index.php

Datação

  1. date.php
  2. archive.php
  3. index.php

Resultados da Pesquisa

  1. search.php
  2. index.php

Página 404 (Não Encontrado)

  1. 404.php
  2. index.php

Anexos

  1. MIME_type.php - qualquer tipo MIME (image.php, video.php, audio.php, application.php ou qualquer outros). Para text/plain será:
  1. text.php
  2. plain.php
  3. text_plain.php

Arquivos gerais (não importa o tipo de anexo):

  1. attachment.php
  2. single.php
  3. index.php

Todas estas funções ficam no arquivo wp-includes/theme.php. O modelo de hierarquia de funções estão localizados em wp-includes/theme.php.


cb-warning.png
Artigo ou Seção com explicações avançadas
A seguir, estão explicações ou instruções para usuários avançados, o que pode exigir o conhecimento de termos e ferramentas não comuns a todas as pessoas.
Adicione {{Avançado}} para usar esta caixa.

Filtros de Hierarquia

O sistema de modelos dos WordPress permite que você filtre a hierarquia. O filtro (localizado na função get_query_template()) usa este nome de filtro: "{$type}_template" onde $type é o nome do arquivo na hierarquia, sem a extensão de arquivo .php.

Lista completa:

  • index_template
  • 404_template
  • archive_template
  • author_template
  • category_template
  • tag_template
  • taxonomy_template
  • date_template
  • home_template
  • front_page_template
  • page_template
  • paged_template
  • search_template
  • single_template
  • text_template, plain_template, text_plain_template (all mime types)
  • attachment_template
  • comments_popup

Examplo de uso

Um exemplo, observe a hieraquia de arquivod para autor:

  • author-{nicename}.php
  • author-{id}.php
  • author.php

Para criar author-{role}.php prevalecendo sobre author.php, podemos manipular a hierarquia padrão usando o hook 'author_template'. Em vez de requisitar /autor/usuário, usaremos author-editor.php para usuários na função editor, se o arquivo existir na pasta do tema, e assim para todas as funções de usuários existentes.

function author_role_template( $templates='' )
{
	$author = get_queried_object();
	$role=$author->roles[0];
	
	if(!is_array($templates) && !empty($templates)) {
		$templates=locate_template(array("author-$role.php",$templates),false);
	} 
	elseif(empty($templates)) {
		$templates=locate_template("author-$role.php",false);
	}
	else {
		$new_template=locate_template(array("author-$role.php"));
		if(!empty($new_template)) array_unshift($templates,$new_template);
	}
	
	return $templates;
}
add_filter( 'author_template', 'author_role_template' );


brasil-1.png
A documentação do WordPress em Português do Brasil.
Todas as comunidades lusófonas também são bem-vindas! Adicione {{Codex-pt}} em seus artigos.