if (is_home () &&! is_front_page ())


23

Vedo molto il seguente codice nei file index.php. Comprendo che is_front_page()restituisce true quando si visualizza la pagina iniziale del sito (sia che si visualizzi l'indice dei post di blog o una pagina statica), mentre is_home()restituisce true quando si visualizza l'indice dei post di blog (se visualizzato sulla prima pagina o in una pagina statica). Sono ancora un po 'perplesso sull'uso del seguente codice -

<?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; ?>

Qualsiasi spiegazione del perché questo pezzo di codice è così popolare è molto apprezzata.

Risposte:


15

Questo visualizzerà il titolo della pagina quando una pagina statica è impostata per mostrare post.

Per esempio

Mostro messaggi sulla mia homepage ... Non farà nulla.

Se, diciamo, mostrerò post sulla pagina intitolata Notizie ... Mostrerà Notizie in H1.

Questo viene utilizzato in modo da mostrare il titolo della pagina, ogni volta che i post vengono visualizzati su una pagina, ma nulla quando i post sul blog vengono visualizzati sulla prima pagina (home page).

Lo facciamo perché se si trova sulla home page ... mostrerà il titolo del primo post, facendolo apparire due volte (una volta in cima in H1 e di nuovo quando i post sono ripetuti).


Grazie Shramee. Ho trovato il titolo della mia pagina dell'indice del blog in un <h1> quando ho provato a capirlo, ma in realtà non appare da nessuna parte. Penso che alcuni tematici lo usino solo per aiutare le persone che usano gli screen reader, e quindi nascondono il testo reale, il che è un po 'confuso per i neofiti se non è commentato / documentato.
olliew,

Bene ... Aiuta a sapere in quale contesto vengono utilizzati i post (come nell'esempio sopra per Notizie) ma è principalmente presente per la SEO , H1 svolge un ruolo importante nell'aiutare i robot di ricerca a capire meglio il contenuto della pagina.
Shramee,

26

Ecco come farlo nel modo giusto:

if ( is_front_page() && is_home() ) {
// Default homepage

} elseif ( is_front_page()){
// Static homepage

} elseif ( is_home()){

// Blog page

} else {

// Everything else

}

Questo è l'unico modo (giusto) per visualizzare o modificare i contenuti con la tua home page e la tua pagina blog.


4

Non sono sicuro di "popolare", non mi sembra così (ma poi non guardo così tanti temi).

Ti sembra di capire bene cosa fa ogni condizionale, quindi questo non dovrebbe confonderti. Questo combina le condizioni per verificare che l'indice del blog sia visualizzato e non sia nella prima pagina.

Ah, la ragione per single_post_title()cui indovino è che mostra il titolo $wp_query->queried object(impostato dalla query principale come contesto corrente), piuttosto che $postglobale (impostato dal ciclo iterante).

In alcune circostanze queste saranno le stesse, ma non in tali casi per i controlli delle condizioni. Il ciclo conterrà post , ma l'oggetto interrogato sarà pagina (a meno che non stia mescolando le cose :).


Ho esaminato un sacco di modelli di recente ed è molto comune. Hai ragione, ho capito cosa sta facendo il loop, ma non capisco perché la gente scelga di farlo in questo modo particolare. Perché usare single_post_title anziché the_title ()?
olliew,
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.