Ierarhia de șabloane: confuzie între index.php, front-page.php, home.php
Sunt foarte confuz în legătură cu index.php
, home.php
și front-page.php
. În multe cazuri, chiar dacă aveam un index.php
, l-am suprascris cu front-page.php
. Dar recent am aflat despre existența home.php
.
- Care este diferența dintre
home.php
șiindex.php
? - În ce condiții ideale ar trebui să folosesc
home.php
în loc deindex.php
? - În ce condiții ideale ar trebui să folosesc
front-page.php
? - Când folosesc
front-page.php
, ce anume faceindex.php
pentru mine?
Am citit Ierarhia de șabloane în Codex. Vă rog să nu confundați întrebarea mea cu șabloanele de pagini, le înțeleg, alHamduLILLAH.

Logica paginii de front este una dintre cele mai confuze funcționalități din WordPress și este extrem de greu de explicat și rezumat. După cum am menționat într-un comentariu acum ceva timp, am petrecut o cantitate nesfântă de timp pentru a crea ghidul meu privind logica paginii de front pentru aceasta.
Dar, deoarece acesta este un subiect popular, permiteți-mi să încerc să răspund la acele întrebări foarte specifice pe care le-ați avut.
Care este diferența dintre
home.php
șiindex.php
?
home.php
este un șablon pentru indexul de articole (arhiva tipului de postare nativ Post, care este un caz special în WP). WordPress va încerca să îl caute pentru indexul de articole, indiferent dacă acestea sunt afișate în rădăcina site-ului sau pe o pagină dedicată de articole.
index.php
este un șablon universal. Este ultima alegere în toate ramurile ierarhiei de șabloane și va fi selectat atunci când nimic altceva nu se potrivește, atât pentru arhive, cât și pentru vizualizări individuale.
Doar indexul de articole poate folosi home.php
, dar toate celelalte contexte pot și vor folosi index.php
.
Care este condiția ideală pentru a folosi un
home.php
în loc de unindex.php
?
Folosiți home.php
pentru a personaliza indexul de articole.
Folosiți index.php
pentru a oferi cel mai generic șablon în tema dumneavoastră, potrivit pentru afișarea oricărui conținut.
Unele teme aleg să aibă index.php
gol și se asigură că au șabloane mai specifice pentru toate cazurile posibile, astfel încât acesta să nu fie niciodată necesar.
Care este condiția ideală pentru a folosi un
front-page.php
?
front-page.php
este folosit pentru indexul de articole în rădăcină sau pentru pagina frontală statică, dacă este activată.
Este un șablon cu prioritate mare, așa că dacă tema îl include, nu puteți selecta un șablon arbitrar pentru pagina frontală statică. Din acest motiv, aproape niciodată nu este inclus în temele lansate public (ceea ce este corect).
Cea mai bună utilizare pentru el este în proiectele private, deoarece este mai ușor de configurat decât un șablon de pagină.
Când folosesc un
front-page.php
, ce sarcini specifice îmi îndeplinește atunci unindex.php
?
index.php
este încă un șablon universal pentru toate celelalte cazuri.
Dacă folosiți o pagină frontală statică (pentru care se va aplica front-page.php
), atunci pagina de articole va încerca să folosească home.php
și apoi index.php
.

Fișierul front-page.php
este șablonul pentru pagina principală a site-ului. Acesta va fi întotdeauna utilizat pe pagina principală a site-ului tău, indiferent dacă get_option( 'show_on_front' )
este setat la page
sau posts
.
Fișierul șablon home.php
este șablonul pentru indexul articolelor blogului. Acesta va fi întotdeauna utilizat pentru a afișa indexul articolelor blogului tău, indiferent dacă indexul articolelor este afișat pe pagina principală a site-ului sau pe o altă pagină.
În cazul în care atât front-page.php
cât și home.php
există, iar get_option( 'show_on_front' )
este setat la posts
(adică pagina principală afișează indexul articolelor), fișierul front-page.php
va avea prioritate față de fișierul home.php
.
Fișierul index.php
este șablonul implicit de rezervă pentru toate contextele din Ierarhia Șabloanelor. Acesta este utilizat doar dacă nu există un fișier șablon mai specific pentru contextul curent.
Ierarhia șabloanelor pentru pagina principală a site-ului este:
front-page.php
- Dacă
'page' == get_option( 'show_on_front' )
: ierarhia paginilor - Dacă
'posts' == get_option( 'show_on_front' )
: ierarhia indexului articolelor blogului
Ierarhia șabloanelor pentru indexul articolelor blogului este:
home.php
index.php
Ierarhia șabloanelor pentru pagini este:
- Șablon personalizat pentru pagină
page-{slug}.php
page-{id}.php
page.php
index.php

Toate acestea provin dintr-o citire atentă a Ierarhiei de șabloane.
home.php
este utilizat dacă:
- Pagina frontală a site-ului tău este setată să afișeze o listă de articole, sau
- Este setată o pagină frontală statică, și
- Un vizitator accesează pagina pe care ai definit-o ca "lista de articole" (de ex.,
http://example.com/blog/
)
- Și tema are un fișier
home.php
Dacă ultima condiție nu este îndeplinită - adică nu există un fișier home.php
în temă - atunci se va încărca index.php
.
front-page.php
va fi utilizat dacă:
- Este setată o pagină frontală statică, și
- Un vizitator accesează pagina pe care ai definit-o drept "pagina frontală statică" (adică,
http://example.com/
), și - Tema are un fișier
front-page.php
Dacă ultima condiție nu este îndeplinită - adică nu există un fișier front-page.php
în temă - atunci se va încărca index.php
.
Pe scurt
Dacă dorești să personalizezi lista ta de articole, folosește home.php
.
Dacă dorești să personalizezi pagina ta frontală statică, folosește front-page.php
.

Pe scurt:
index.php
este un șablon de rezervă, folosit doar în cazul în care nu a fost găsit un șablon mai potrivithome.php
este folosit pentru blog (o listă a postărilor recente)front-page.php
este folosit pentru pagina de destinație (landing-page)
Șablonul universal index.php
Fișierul șablon index.php
este un șablon de rezervă. Este folosit ca ultimă soluție atunci când nu este disponibil un alt șablon mai potrivit. De exemplu, dacă nu aveți un front-page.php
sau un home.php
, atunci va fi folosit index.php
. Același lucru este valabil și pentru șabloanele lipsă precum archive.php
sau single.php
și așa mai departe.
Diferența dintre front-page.php
și home.php
Diferența dintre șabloanele front-page.php
și home.php
este că front-page.php
este folosit, după cum sugerează și numele, ca pagina principală a site-ului, în timp ce home.php
este destinat să fie pagina de start a secțiunii Blog.
Ce șablon va fi folosit pentru pagina de destinație a site-ului meu?
Șablonul front-page.php
, dacă este prezent, va fi folosit pentru pagina principală a site-ului (de ex. http://www.example.com/
). Dacă nu este prezent, atunci va fi folosit home.php
. Dacă ambele fișiere șablon front-page.php
și home.php
lipsesc, atunci va fi folosit șablonul de rezervă index.php
.
Ce șablon va fi folosit pentru pagina de blog?
WordPress vă permite să aveți o pagină "Blog" (care va afișa postările recente) pe o pagina diferită decât pagina de destinație (de ex. http://www.example.com/blog/
). Deci, dacă acesta este cazul pe site-ul dumneavoastră, atunci pagina Blog va folosi întotdeauna șablonul home.php
. Dacă home.php
nu există, atunci va fi folosit șablonul de rezervă index.php
.
Cum să configurați pagina de destinație și pagina de blog?
Pentru a configura ce conținut să fie afișat pe pagina principală, accesați Administratorul WordPress, sub Unelte > Citire, unde puteți configura "Afișarea paginii principale" pentru a afișa o pagină statică sau postările recente.
În cazul în care alegeți să afișați o pagină statică pe pagina principală, atunci aveți și posibilitatea să setați care pagină să fie folosită ca locație pentru pagina Blog (care va folosi șablonul home.php
):

preluat de la Ierarhia de șabloane WordPress
Afișarea paginii de acasă
În mod implicit, WordPress configurează pagina principală a site-ului tău pentru a afișa cele mai recente articole de pe blog. Această pagină se numește indexul articolelor de blog. De asemenea, poți seta ca articolele de blog să fie afișate pe o pagină statică separată. Fișierul șablon home.php este folosit pentru a reda indexul articolelor de blog, indiferent dacă este folosit ca pagină frontală sau pe o pagină statică separată. Dacă home.php nu există, WordPress va folosi index.php.
- home.php
- index.php
Notă: Dacă există front-page.php, acesta va suprascrie șablonul home.php.
Afișarea paginii frontale
Fișierul șablon front-page.php este folosit pentru a reda pagina frontală a site-ului tău, indiferent dacă pagina frontală afișează indexul articolelor de blog (menționat mai sus) sau o pagină statică. Șablonul paginii frontale are prioritate față de șablonul indexului articolelor de blog (home.php). Dacă fișierul front-page.php nu există, WordPress va folosi fie home.php fie page.php în funcție de setările din Setări → Citire. Dacă niciunul dintre aceste fișiere nu există, va folosi fișierul index.php.
1. front-page.php – Folosit atât pentru „ultimele articole” cât și pentru „o pagină statică” așa cum este setat în secțiunea de afișare a paginii frontale din Setări → Citire.
2. home.php – Dacă WordPress nu poate găsi front-page.php și „ultimele articole” este setat în secțiunea de afișare a paginii frontale, va căuta home.php. În plus, WordPress va căuta acest fișier când pagina de articole este setată în secțiunea de afișare a paginii frontale.
3. page.php – Când „pagina frontală” este setată în secțiunea de afișare a paginii frontale.
4. index.php – Când „ultimele articole” este setat în secțiunea de afișare a paginii frontale dar home.php nu există sau când pagina frontală este setată dar page.php nu există.
După cum poți vedea, există multe reguli în ceea ce privește calea pe care o urmează WordPress. Folosirea diagramei de mai sus este cea mai bună metodă pentru a determina ce va afișa WordPress.
Diagrama ierarhiei de șabloane:

Am decis să testez care șablon este utilizat pentru fiecare dintre următoarele pagini atunci când sunt setate diferite opțiuni de afișare a paginii principale.
- example.net
- example.net/home/
- example.net/blog/
Rezultatele sunt destul de lungi, dar pot fi folosite ca referință sau ca fișă de ajutor.
Sursa: Cum diferă șabloanele front-page.php și home.php în WordPress?
Notă pentru editor: Am încercat să copiez și să lipesc tabelele aici, dar este necesar formatul markdown în loc de HTML. Vă rog convertiți în markdown dacă se poate.
