Semnificația secvenței de cod "if ( is_home() && ! is_front_page() )"

23 apr. 2016, 15:12:39
Vizualizări: 219K
Voturi: 39

Văd frecvent următorul cod în fișierele index.php. Înțeleg că is_front_page() returnează true când vizualizăm Prima Pagină a Site-ului (indiferent dacă afișează indexul articolelor de blog sau o pagină statică), în timp ce is_home() returnează true când vizualizăm Indexul Articolelor de Blog (indiferent dacă este afișat pe prima pagină sau pe o pagină statică). Sunt încă oarecum nedumerit în legătură cu utilizarea următorului cod -

<?php if ( have_posts() ) : ?>

    <?php if ( is_home() && ! is_front_page() ) : ?>
        <header>
            <h1 class="page-title screen-reader-text"><?php single_post_title(); ?></h1>
        </header>
    <?php endif; ?>

Orice explicație despre motivul pentru care această bucată de cod este atât de populară este foarte apreciată.

1
Toate răspunsurile la întrebare 3
1
56

Iată cum să faci corect:

if ( is_front_page() && is_home() ) {
// Pagina principală implicită

} elseif ( is_front_page()){
// Pagina principală statică

} elseif ( is_home()){

// Pagina de blog

} else {

// Orice altceva

}

Acesta este singurul mod (corect) de a afișa sau modifica conținutul pentru pagina ta principală și pentru pagina de blog.

19 sept. 2016 22:19:26
Comentarii

Deci așa stilizați pagini diferite în WordPress? De exemplu, pagina mea principală poate avea o imagine hero mare, dar paginile Despre noi și Contact pot să nu aibă deloc. Așa se realizează layout-uri diferite pentru pagini diferite?

user3660857 user3660857
23 feb. 2022 04:45:13
2
21

Acesta va afișa titlul paginii atunci când o pagină statică este setată să afișeze articole.

Exemplu:

Dacă afișez articole pe pagina principală... Nu se va întâmpla nimic.

Dacă, să zicem, afișez articole pe o pagină intitulată Știri... Va afișa Știri în H1.

Această funcționalitate este folosită pentru a afișa titlul paginii atunci când articolele sunt afișate pe o pagină, dar nimic atunci când articolele sunt afișate pe pagina principală (home page).

Facem acest lucru deoarece, dacă este pe pagina principală... va afișa titlul primului articol, făcându-l să apară de două ori (o dată în partea de sus în H1 și din nou când articolele sunt parcurse în buclă).

23 apr. 2016 16:03:58
Comentarii

Mulțumesc Shramee. Am găsit titlul paginii de index a blogului meu într-un <h1> în timp ce încercam să îmi dau seama, dar de fapt nu apare nicăieri. Cred că unii designeri de teme îl folosesc doar pentru a ajuta persoanele care utilizează cititoare de ecran, și apoi ascund textul real, ceea ce este un pic confuz pentru începători dacă nu este comentat/documentat.

olliew olliew
23 apr. 2016 16:53:01

Ei bine... Ajută să știm în ce context sunt folosite postările (ca în exemplul de mai sus pentru Știri), dar este acolo în principal pentru SEO, H1 joacă un rol important în a ajuta roboții de căutare să înțeleagă mai bine conținutul paginii.

shramee shramee
24 apr. 2016 09:16:20
1

Nu sunt sigur despre termenul "popular", nu mi se pare așa (dar pe de altă parte nu mă uit la prea multe teme).

Se pare că înțelegi bine ce face fiecare condițional, așa că nu ar trebui să fie confuz pentru tine. Aceasta combină condiții pentru a verifica că se afișează indexul blogului șinu este pe pagina principală.

Ah, motivul pentru single_post_title() cred că este că afișează titlul pentru $wp_query->queried object (configurat de interogarea principală ca context curent), nu pentru variabila globală $post (configurată prin iterarea buclei).

În unele circumstanțe acestea vor fi la fel, dar nu în cazul pentru care verifică condiția. Bucla va conține articole, dar obiectul interogat va fi o pagină (dacă nu amestec lucrurile :).

23 apr. 2016 15:32:43
Comentarii

Am analizat recent o mulțime de șabloane și este foarte comun. Ai dreptate că înțeleg ce face loop-ul, dar nu înțeleg de ce oamenii ar alege să facă acest lucru în acest mod particular. De ce să folosești single_post_title în loc de the_title()?

olliew olliew
23 apr. 2016 16:28:35