Hierarquia de modelos: confundida com index.php, front-page.php, home.php

36

Estou realmente confuso com index.php, home.phpe front-page.php. Em muitos casos, mesmo tendo um index.php, eu o sobrescrito front-page.php. Mas, recentemente, fiquei ciente home.php.

  • Qual é a diferença entre the home.phpe index.php?
  • Qual é a condição ideal para usar um home.phpque um index.php?
  • Qual é a condição ideal para usar um front-page.php?
  • Quando estou usando um front-page.php, que tarefa específica um index.phpestá fazendo por mim?

Eu li a Hierarquia de modelos no Codex. Por favor, não misture minha pergunta com Modelos de Página, eu os entendo, alHamduLILLAH.

Mayeenul Islam
fonte
11
Tenho @rarst com isso: rarst.net/wordpress/front-page-logic . Pode te ajudar.
Mayeenul Islam

Respostas:

34

A lógica da primeira página é um dos recursos mais confusos do WordPress e é excepcionalmente difícil de explicar e resumir. Como mencionado no comentário, quando voltei, eu queimei uma quantidade profana de tempo para montar minha folha de dicas de lógica da primeira página .

Mas como esse é um tópico popular, deixe-me tentar responder a perguntas muito específicas que você tinha.

Qual é a diferença entre the home.phpe index.php?

home.phpé um modelo para o índice de postagens (arquivo morto do tipo de postagem nativa, que é um caso especial no WP). O WP tentará procurar no índice de postagens, sejam elas exibidas na raiz do site ou na página de postagens dedicada.

index.phpé um modelo abrangente. São as escolhas finais em todos os ramos da hierarquia de modelos e serão escolhidas quando nada mais couber, tanto para arquivos como para visualizações únicas.

Somente o índice de postagens pode usar home.php, mas todos os outros contextos podem e irão usar index.php.

Qual é a condição ideal para usar um home.phpque umindex.php

Você usa home.phppara personalizar o índice de postagens.

Você usa index.phppara fornecer o modelo mais genérico no seu tema, adequado para exibição de qualquer coisa.

Alguns temas optam por ficar vazios index.phpe garantem que eles tenham modelos mais específicos para todos os casos possíveis, para que ele nunca precise ser usado.

Qual é a condição ideal para usar um front-page.php?

front-page.php é usado para o índice de postagens na página inicial raiz ou estática, se ativado.

É um modelo de alta prioridade, portanto, se o tema o incluir, você não poderá selecionar um modelo arbitrário para a primeira página estática. Por esse motivo, quase nunca é incluído em temas divulgados publicamente (o que é correto).

O melhor uso para isso é em projetos privados, pois é mais fácil de configurar do que o modelo de página.

Quando estou usando um front-page.php, que tarefa específica um index.phpestá fazendo por mim?

index.phpainda é um modelo abrangente para todos os outros casos.

Se você usar a primeira página estática (à qual front-page.phpse aplicará), sua página de postagens tentará usar home.phpe então index.php.

Rarst
fonte
28

O front-page.phparquivo é o modelo da primeira página do site . Ele sempre será usado na página inicial do site, independentemente de get_option( 'show_on_front' )estar definido como pageou posts.

O home.phparquivo de modelo é o modelo de índice de postagens do blog . Ele sempre será usado para exibir o índice de postagens do seu blog, independentemente de o índice de postagens do blog ser exibido na primeira página do site ou em uma página diferente.

No caso em que ambos front-page.phpe home.hppexistem, e o get_option( 'show_on_front' )está definido para posts(ou seja, a página do site da frente exibe o índice posts), o front-page.phparquivo terá precedência sobre o home.phparquivo.

O index.phparquivo é o modelo de fallback padrão para todos os contextos na Hierarquia de Modelos . Ele só é usado se um arquivo de modelo mais específico não existir para o contexto atual.

A hierarquia do modelo para a primeira página do site é:

  • front-page.php
  • Se 'page' == get_option( 'show_on_front' ): hierarquia de páginas
  • Se 'posts' == get_option( 'show_on_front' ): o blog postar hierarquia de índices

A hierarquia do modelo para o índice de postagens do blog é:

  • home.php
  • index.php

A hierarquia de modelos para as páginas é:

  • Modelo de página personalizado
  • page-{slug}.php
  • page-{id}.php
  • page.php
  • index.php
Chip Bennett
fonte
Então, se eu estiver acertando, não é possível usar o my-template-1modelo quando a primeira página estiver definida como as últimas postagens e usar my-template-2quando a frente estiver definida como uma página estática (sem codificação)?
Jack Johansson
18

Tudo isso vem de uma leitura completa da Hierarquia de modelos .

home.php é usado se:

  • A primeira página do seu site está configurada para exibir uma lista de postagens ou
  • E o tema tem um home.phparquivo

Se a última condição não for atendida - ou seja, não houver home.phparquivo no tema -, index.phpserá carregado.

front-page.php será usado se:

Se a última condição não for atendida - ou seja, não houver front-page.phparquivo no tema -, index.phpserá carregado.

Em suma

Se você deseja personalizar sua lista de postagens, use home.php.
Se você deseja personalizar sua página inicial estática, use front-page.php.

Pat J
fonte
2
home.phpserá usado para o índice de postagens do blog, independentemente da localização. Se a primeira página estiver configurada para exibir o índice de postagens do blog, ela home.phpserá usada (se front-page.phpnão existir).
Chip Bennett
10

Em resumo:

  • index.php é apenas um modelo de fallback, caso nenhum modelo apropriado tenha sido encontrado
  • home.php é usado para o blog (uma lista de postagens recentes)
  • front-page.php é usado para a página de destino

O index.phpmodelo universal

O index.phparquivo de modelo é um modelo de fallback. É usado como último recurso quando nenhum outro modelo mais apropriado está disponível. Por exemplo, se você não tiver um front-page.phpnem um, home.phpentão index.phpserá usado. Isso também se aplica à falta archive.phpou single.phpassim por diante.

Em relação ao front-page.phpVShome.php

Agora, a diferença entre front-page.phpe home.phpmodelos é que ele front-page.phpé usado, como o nome sugere, como a primeira página principal do site, enquanto home.phpse destina a ser a página inicial da seção Blog .

Qual modelo será usado para a página de destino do meu site?

O front-page.phpmodelo, se presente, será usado para a primeira página principal do site (por exemplo http://www.example.com/). Se não estiver presente, home.phpserá usado. Se os arquivos de modelo front-page.phpe home.phpestiverem ausentes, o index.phpmodelo de fallback será usado.

Qual modelo será usado para a minha página de blog?

O WordPress permite que você tenha uma página "Blog" (que listará postagens recentes) em uma página diferente da página de destino (por exemplo http://www.example.com/blog/). Portanto, se esse for o caso no seu site, a página Blog sempre usará o home.phpmodelo. Se home.phpnão existir, o index.phpmodelo de fallback será usado.

Como configurar a página de destino e a página do blog?

Para configurar o conteúdo a ser exibido em sua página inicial, vá para o Admin do WordPress , em Ferramentas> Leitura , lá você pode configurar os " Visores da página inicial " para mostrar uma página estática ou suas últimas postagens.

No caso de você optar por exibir uma página estática na primeira página, também poderá definir qual página usar como espaço reservado para a página do Blog (que usará o home.phpmodelo):

insira a descrição da imagem aqui

perguntou Feb 12 '12
fonte
3

extraído da hierarquia de modelos do Wordpress

Exibição da página inicial

Por padrão, o WordPress define a página inicial do seu site para exibir suas postagens mais recentes. Essa página é chamada de índice de postagens do blog. Você também pode definir as postagens do seu blog para serem exibidas em uma página estática separada. O arquivo de modelo home.php é usado para renderizar o índice de postagens do blog, esteja sendo usado como a primeira página ou em uma página estática separada. Se o home.php não existir, o WordPress usará o index.php.

  1. home.php
  2. index.php

Nota: Se o front-page.php existir, ele substituirá o modelo home.php.

Visor da primeira página

O arquivo do modelo front-page.php é usado para renderizar a página inicial do seu site, independentemente de a página inicial exibir o índice de postagens do blog (mencionado acima) ou uma página estática. O modelo da primeira página tem precedência sobre o modelo do índice de postagens do blog (home.php). Se o arquivo front-page.php não existir, o WordPress usará os arquivos home.php ou page.php, dependendo da configuração em Configurações → Leitura. Se nenhum desses arquivos existir, ele usará o arquivo index.php.

1. front-page.php - Usado para “as últimas postagens” ou “uma página estática”, conforme definido na página inicial exibe a seção Configurações → Leitura.

2. home.php - Se o WordPress não conseguir encontrar o front-page.php e "suas últimas postagens" estiverem definidas na seção de exibição da primeira página, ele procurará o home.php. Além disso, o WordPress procurará esse arquivo quando a página de postagens for definida na seção de exibição da primeira página.

3. page.php - Quando “página inicial” é definida na seção de exibição da página inicial.

4. index.php - Quando "suas últimas postagens" são definidas na seção de exibição da primeira página, mas o home.php não existe ou quando a página inicial é definida, mas o page.php não existe.

Como você pode ver, existem muitas regras para o caminho que o WordPress segue. Usar o gráfico acima é a melhor maneira de determinar o que o WordPress exibirá.

Gráfico de hierarquia de modelos: Hierarquia de modelo do Wordpress

samix73
fonte
2

Decidi testar qual modelo é usado para cada uma das páginas a seguir quando as várias opções de exibição da página inicial estão definidas.

  • example.net
  • example.net/home/
  • example.net/blog/

Os resultados são bastante longos, mas podem ser usados ​​como referência ou como cábula.

A primeira página é exibida

Fonte: Como os modelos front-page.php e home.php diferem no WordPress?

Nota para o editor: tentei copiar e colar as tabelas aqui, mas o formato de remarcação é necessário em vez de HTML. Converta para remarcação, se puder.

Henry Wright
fonte