Gerarchia dei modelli: confusa con index.php, front-page.php, home.php


36

Sono davvero confuso con index.php, home.phpe front-page.php. In molti casi, anche se ne avevo uno index.php, lo sovrascrivo con front-page.php. Ma recentemente, ne sono venuto a conoscenza home.php.

  • Qual è la differenza tra il home.phpe index.php?
  • Qual è la condizione ideale per usare a home.phpche an index.php?
  • Qual è la condizione ideale per usare un front-page.php?
  • Quando sto usando un front-page.phpallora quale compito specifico index.phpmi sta facendo?

Ho letto la Gerarchia dei modelli in Codex. Per favore, non mescolare la mia domanda con i modelli di pagina, li capisco, alHamduLILLAH.


1
Ottenuto @rarst con questo: rarst.net/wordpress/front-page-logic . Può aiutarti.
Mayeenul Islam

Risposte:


34

La logica della prima pagina è una delle funzionalità più confuse di WordPress ed è eccezionalmente difficile da spiegare e riassumere. Come accennato nel commento mentre ero indietro, ho bruciato una quantità di tempo ingenuo per mettere insieme il mio cheat sheet della prima pagina .

Ma dato che questo è un thread popolare, lasciami provare a rispondere a quelle domande molto specifiche che avevi.

Qual è la differenza tra il home.phpe index.php?

home.phpè un modello per l'indice dei post (archivio del tipo di post nativo Post, che è un caso speciale in WP). WP tenterà di cercare l'indice dei post, sia che vengano visualizzati nella radice del sito o nella pagina dei post dedicati.

index.phpè un modello catch-all. Sono le scelte finali in tutti i rami della gerarchia dei modelli e verranno scelte quando non si adatta altro, sia per gli archivi che per le viste singole.

È possibile utilizzare solo l'indice dei post home.php, ma tutti gli altri contesti potrebbero e verranno utilizzati index.php.

Qual è la condizione ideale per usare a home.phpche anindex.php

Si utilizza home.phpper personalizzare l'indice dei post.

Utilizzi index.phpper fornire il modello più generico nel tuo tema, adatto per la visualizzazione di qualsiasi cosa.

Alcuni temi scelgono di essere vuoti index.phpe assicurano di avere modelli più specifici per tutti i casi possibili, quindi non devono mai essere utilizzati.

Qual è la condizione ideale per usare un front-page.php?

front-page.php viene utilizzato per l'indice dei post nella pagina principale radice o statica, se abilitato.

È un modello ad alta priorità, quindi se ha un tema non è possibile selezionare un modello arbitrario per la prima pagina statica. Per questo motivo non è quasi mai incluso in temi rilasciati pubblicamente (che è corretto).

Il miglior utilizzo è nei progetti privati, poiché è più facile da configurare rispetto al modello di pagina.

Quando sto usando un front-page.phpallora quale compito specifico index.phpmi sta facendo?

index.phpè ancora un modello all catch per tutti gli altri casi.

Se si utilizza la prima pagina statica (a cui front-page.phpsi applicherà), la pagina dei post proverà a utilizzare home.phpe quindi index.php.


28

Il front-page.phpfile è il modello di prima pagina del sito . Sarà sempre utilizzato sulla prima pagina del tuo sito, indipendentemente dal fatto che get_option( 'show_on_front' )sia impostato su pageo posts.

Il home.phpfile modello è il modello indice dei post di blog . Verrà sempre utilizzato per visualizzare l'indice dei post sul blog, indipendentemente dal fatto che l'indice dei post sul blog sia visualizzato nella prima pagina del sito o in una pagina diversa.

Nel caso in cui sia front-page.phpe home.hppesistono, e il get_option( 'show_on_front' )è impostato posts(cioè, viene visualizzata la pagina del sito di fronte l'indice post del blog), il front-page.phpfile verrà la precedenza sul home.phpfile.

Il index.phpfile è il modello di fallback predefinito per tutti i contesti nella Gerarchia dei modelli . Viene sempre utilizzato solo se non esiste un file modello più specifico per il contesto corrente.

La gerarchia dei modelli per la prima pagina del sito è:

  • front-page.php
  • Se 'page' == get_option( 'show_on_front' ): gerarchia di pagine
  • Se 'posts' == get_option( 'show_on_front' ): gerarchia dell'indice dei post di blog

La gerarchia dei modelli per l' indice dei post di blog è:

  • home.php
  • index.php

La gerarchia dei modelli per le pagine è:

  • Modello di pagina personalizzato
  • page-{slug}.php
  • page-{id}.php
  • page.php
  • index.php

Quindi, se sto andando bene, non è possibile utilizzare il my-template-1modello quando la prima pagina è impostata sugli ultimi post e utilizzare my-template-2quando la parte anteriore è impostata su una pagina statica (senza codifica)?
Jack Johansson

18

Tutto ciò deriva da una lettura approfondita della Gerarchia dei modelli .

home.php viene utilizzato se:

  • La prima pagina del tuo sito è impostata per visualizzare un elenco di post o
  • E il tema ha un home.phpfile

Se l'ultima condizione non viene soddisfatta, ovvero non è presente alcun home.phpfile nel tema, index.phpverrà caricato.

front-page.php sarà utilizzato se:

Se l'ultima condizione non viene soddisfatta, ovvero non è presente alcun front-page.phpfile nel tema, index.phpverrà caricato.

In sintesi

Se vuoi personalizzare il tuo elenco di post, usa home.php.
Se vuoi personalizzare la tua home page statica, usa front-page.php.


2
home.phpverrà utilizzato per l'indice dei post di blog, indipendentemente dalla posizione. Se la prima pagina è impostata per visualizzare l'indice dei post sul blog, home.phpverrà utilizzata (se front-page.phpnon esiste).
Chip Bennett,

10

In breve:

  • index.php è solo un modello di fallback, nel caso in cui non sia stato trovato alcun modello appropriato
  • home.php viene utilizzato per il blog (un elenco di post recenti)
  • front-page.php viene utilizzato per la landing page

Il index.phpmodello universale

Il index.phpfile modello è un modello di fallback. Viene utilizzato come ultima risorsa quando non sono disponibili altri modelli più appropriati. Ad esempio, se non si dispone di una front-page.php, né un home.phppoi index.phpverrà utilizzato. Questo vale anche per i dispersi archive.phpo single.phpcosì via.

Per quanto riguarda front-page.phpVShome.php

Ora la differenza tra front-page.phpe home.phptemplate è che front-page.phpviene utilizzato, come suggerisce il nome, come prima pagina principale del sito, mentre home.phpè destinato a essere la casa del Blog sezione .

Quale modello verrà utilizzato per la landing page del mio sito?

Il front-page.phpmodello, se presente, verrà utilizzato per la prima pagina principale del sito (ad es http://www.example.com/.). Se non presente, home.phpverrà invece utilizzato. Se mancano entrambi i file modello front-page.phpe, verrà utilizzato il modello fallback.home.phpindex.php

Quale modello verrà utilizzato per la mia pagina del blog?

WordPress ti consente di avere una pagina "Blog" (che elenca i post recenti) su una pagina diversa rispetto alla pagina di destinazione (ad es http://www.example.com/blog/.). Quindi, se questo è il caso sul tuo sito, la pagina Blog utilizzerà sempre il home.phpmodello. Se home.phpnon esiste, allora ilindex.php verrà utilizzato il modello di fallback.

Come configurare la landing page e la pagina del blog?

Per configurare il contenuto da mostrare sulla tua prima pagina, vai all'amministratore di WordPress , sotto Strumenti> Lettura , lì puoi configurare le "Visualizzazioni della prima pagina " per mostrare una pagina statica o i tuoi ultimi post.

Nel caso in cui si scelga di visualizzare una pagina statica in prima pagina, si ha anche la possibilità di impostare quale pagina utilizzare come segnaposto per la pagina Blog (che utilizzerà il home.phpmodello):

inserisci qui la descrizione dell'immagine


3

tratto dalla gerarchia dei modelli di Wordpress

Visualizzazione della home page

Per impostazione predefinita, WordPress imposta la home page del tuo sito per visualizzare i tuoi ultimi post sul blog. Questa pagina si chiama indice dei post sul blog. Puoi anche impostare i post del tuo blog in modo che vengano visualizzati su una pagina statica separata. Il file modello home.php viene utilizzato per rendere l'indice dei post del blog, sia che venga utilizzato come prima pagina o su una pagina statica separata. Se home.php non esiste, WordPress utilizzerà index.php.

  1. home.php
  2. index.php

Nota: se esiste front-page.php, sostituirà il modello home.php.

Visualizzazione della prima pagina

Il file modello front-page.php viene utilizzato per eseguire il rendering della prima pagina del tuo sito, indipendentemente dal fatto che la prima pagina mostri l'indice dei post del blog (menzionato sopra) o una pagina statica. Il modello della prima pagina ha la precedenza sul modello dell'indice dei post del blog (home.php). Se il file front-page.php non esiste, WordPress utilizzerà i file home.php o page.php a seconda dell'impostazione in Impostazioni → Lettura. Se nessuno di questi file esiste, utilizzerà il file index.php.

1. front-page.php - Usato sia per “i tuoi ultimi post” sia per “una pagina statica” come impostato nella prima pagina visualizza la sezione Impostazioni → Lettura.

2. home.php - Se WordPress non riesce a trovare front-page.php e “i tuoi ultimi post” sono impostati nella sezione display della prima pagina, cercherà home.php. Inoltre, WordPress cercherà questo file quando la pagina dei post è impostata nella sezione display della prima pagina.

3. page.php - Quando “front page” è impostato nella sezione display della prima pagina.

4. index.php - Quando “i tuoi ultimi post” sono impostati nella sezione di visualizzazione della prima pagina ma home.php non esiste o quando è impostata la prima pagina ma page.php non esiste.

Come puoi vedere, ci sono molte regole su quale percorso prende WordPress. L'utilizzo della tabella sopra è il modo migliore per determinare quale WordPress mostrerà.

Gerarchia dei modelli: Gerarchia dei modelli di Wordpress


2

Ho deciso di testare quale modello viene utilizzato per ciascuna delle pagine seguenti quando sono impostate le varie opzioni di visualizzazione della prima pagina.

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

I risultati sono piuttosto lunghi, ma possono essere usati come riferimento o cheat-sheet.

Viene visualizzata la prima pagina

Fonte: In che modo i modelli front-page.php e home.php differiscono in WordPress?

Nota per l'editor: ho provato a copiare e incollare le tabelle qui, ma è richiesto il formato markdown anziché HTML. Se possibile, converti in markdown.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.