Când să folosim is_home() vs is_front_page()?
Am descoperit că is_front_page
pare să returneze true când vizualizez pagina principală și am o postare sticky atribuită acolo.
De asemenea, returnează true când am atribuit o pagină ca pagină statică de start prin Setări > Citire.
De ce aș vrea vreodată să folosesc is_home()
?

is_front_page()
returnează true dacă utilizatorul se află pe pagina sau pagina de articole setată ca pagină principală în Setări->Citire->Pagina ta de start.
Deci, dacă setați despre noi
ca pagină principală, atunci această condiție va fi adevărată doar când se afișează pagina despre noi.
is_home()
returnează true când se află pe pagina listei de articole. Aceasta este de obicei pagina care afișează ultimele 10 articole.
Dacă setările din Pagina ta de start afișează sunt lăsate la valorile implicite, atunci pagina de start va returna true atât pentru is_front_page()
cât și pentru is_home()
.
Un exemplu de utilizare a is_home()
:
- Ați setat pagina de articole la o pagină numită Știri.
- Un utilizator navighează acolo și în antet doriți să afișați navigație suplimentară
- Puteți utiliza
is_home()
pentru a face acest lucru.

Exact. Eu diferențiez astfel: is_front_page()
returnează true când vizualizați Pagina Principală a Site-ului (fie că afișează indexul articolelor de blog sau o pagină statică), în timp ce is_home()
returnează true când vizualizați Indexul Articolelor de Blog (fie că este afișat pe pagina principală sau pe o pagină statică).

Am descoperit că funcțiile is_home()
și is_front_page()
nu funcționează așa cum ne-am aștepta în cazul site-urilor multisite. Soluția mea alternativă folosind funcționalități PHP:
if($_SERVER['REQUEST_URI'] == '/') {
// ești pe pagina principală
}
Așa cum s-a menționat în comentarii, această abordare nu va funcționa pentru instanțele WordPress instalate în subdirectoare ale rădăcinii web. Folosiți-o la discreția voastră.

Pe un site principal multi-site, dacă folosești orice formă de is_home()
sau is_front_page()
pe o pagină statică sau blog, ambele funcții vor returna false.

Tocmai am testat ambele condiții pe un mediu multi-site și ambele au returnat true când am vizitat paginile respective /
.

Folosesc cutia WordPress VVV cu pluginul pentru multisite: https://github.com/Varying-Vagrant-Vagrants/vvv-multisite poate există ceva configurat greșit acolo? Oricum, las un răspuns ca soluție alternativă pentru oricine ar întâmpina o situație similară.

Codul tău este aproape perfect, singurul lucru este: Ce se întâmplă dacă WP este instalat într-un subdirector, de exemplu /blog sau /wordpress. Atunci acest lucru va fi inutil.

@RemziCavdar asta e adevărat. Voi edita răspunsul meu. Din păcate, din cauza numeroaselor modalități în care poți găzdui WP, întâmpini multe probleme.

Vei dori să folosești is_home()
atunci când vrei să verifici dacă utilizatorul vizualizează lista ta de articole de blog (de obicei setată să afișeze 10 articole pe pagină). Dacă ai un fișier home.php
în tema ta, acesta va fi afișat atunci când condiția is_home()
este adevărată.
Următoarele informații pot ajuta la eliminarea unei posibile confuzii: atunci când condițiile is_front_page()
și is_home()
sunt ambele adevărate, șablonul front-page.php
va fi folosit în loc de home.php
.

- Accesezi o pagină principală care este pagina de blog => is_front_page() = ADEVĂRAT && is_home() = ADEVĂRAT
- Accesezi o pagină principală care este o pagină statică => is_front_page() = ADEVĂRAT && is_home() = FALS
- Accesezi pagina de blog, dar pagina ta principală este o pagină statică => is_front_page() = FALS && is_home() = ADEVĂRAT (De asemenea, ADEVĂRAT când accesezi pagini paginate)
Referințe pentru definiții:
https://developer.wordpress.org/reference/functions/is_home/ https://developer.wordpress.org/reference/functions/is_front_page/
