Verificare se la pagina corrente è la pagina Blog
Sono nuovo su WordPress. Sto cercando un modo per verificare se la pagina corrente è la pagina blog nel codice del file header.
Ho controllato ma non riesco a trovare un modo. Aiutatemi, per favore.

Se per 'pagina blog' intendi una pagina statica impostata come pagina articoli nelle Impostazioni di lettura, allora puoi verificarlo facendo così:
if ( is_front_page() && is_home() ) {
// Homepage predefinita
} elseif ( is_front_page() ) {
// Homepage statica
} elseif ( is_home() ) {
// Pagina blog
} else {
// Tutto il resto
}
Quando usi
is_home()
eis_front_page()
, devi usarli nel ordine corretto per evitare bug e testare ogni configurazione utente.
(Fonte: Tag Condizionali - La Pagina Blog)
O semplicemente:
if ( !is_front_page() && is_home() ) {
// Pagina blog
}
O ancora più semplicemente (suppongo):
if ( is_home() ) {
// Pagina blog
}

Un caso d'uso per utilizzare if ( !is_front_page() && is_home() )
, almeno secondo me, è se stai distribuendo un tema che ha uno stile di layout diverso per la pagina iniziale predefinita e la pagina blog.

Sto riscontrando che is_front_page() restituisce true indipendentemente dal fatto che sia selezionato l'archivio del blog o una pagina. Necessita verifica. https://codex.wordpress.org/Function_Reference/is_front_page

Puoi utilizzare il seguente codice nel file functions.php del tuo tema:
function is_blog () {
return ( is_archive() || is_author() || is_category() || is_home() || is_single() || is_tag()) && 'post' == get_post_type();
}
E poi inserisci questo nel file che vuoi controllare:
<?php if (is_blog()) { echo 'Sei su una pagina del blog'; } ?>
Puoi utilizzare gli Hook nel tuo file functions.php per agganciare il codice sopra, in modo che appaia su ogni pagina.

Questa è un'ottima risposta se vuoi determinare se sei su una pagina del blog, ma non necessariamente la pagina principale del blog (come la home del blog). Vedi la risposta di @Giraldi per quello.

Ho erroneamente presupposto che is_blog() esistesse perché is_page() esiste. Non mi è venuto in mente di consultare l'indice ufficiale dei Tag Condizionali di WordPress. Sono riuscito ad applicare efficacemente questa soluzione utilizzando il plugin Widget Logic.

Se per 'pagina blog' intendi una pagina statica impostata come pagina articoli in Impostazioni > Lettura:
global $wp_query;
if ( isset( $wp_query ) && (bool) $wp_query->is_posts_page ) {
//pagina blog statica
}
PS. Questa soluzione funziona anche con l'azione template_redirect

Ciao repinsa, benvenuto su WPSE :) Grazie per aver aggiunto la tua risposta. È stata votata negativamente un po', probabilmente perché c'è un errore di sintassi nel codice (manca un punto e virgola dopo il global $wp_query
) ma anche perché non risponde completamente alla domanda. È una funzione, ma l'OP ha chiesto come risolvere questo problema nel suo file header - quindi potrebbe essere necessaria una spiegazione più dettagliata su cosa inserire dove. Ancora una volta, benvenuto, felice di averti qui!

Per ottenere la pagina indice del blog, ho scoperto che
if ( !is_front_page() && is_home() ) {
// pagina del blog
}
non funziona per me, ho dovuto usare la funzione get_option('page_for_posts') per identificare il post_id della Pagina Blog, la mia risposta è
if ( !is_front_page() && is_home() ){
if ( empty ( $post_id) ) {
global $post;
$post_id = get_option( 'page_for_posts' );
}
//pagina del blog
}

C'è un metodo astuto.
Supponiamo che lo slug della tua pagina del blog sia blog
, puoi usare questo codice.
global $wp_query;
if($wp_query->query['pagename']=='blog'){
// questa è la pagina del blog
}

Immagino sia molto semplice, mi sono trovato nella stessa situazione e ho utilizzato la seguente tecnica che consiste nell'usare lo slug della pagina.
if( is_page('blog') ) {
echo "Questa è la tua pagina del blog";
}
Ma assicurati di non aver selezionato la homepage per visualizzare gli ultimi post del blog e di aver impostato una pagina specifica per il blog come 'blog' o 'notizie' etc, basta usare lo slug di quella pagina e dovresti essere a posto.

Secondo me, la soluzione migliore invece di verificare se la pagina è la home o un archivio o meno, PUOI semplicemente controllare il template che usi.
Per esempio: Uso nella mia pagina dei post del blog questo template:
template-blog.php
Quindi, posso distinguerla da qualsiasi altra pagina in questo modo:
if( is_page_template('template-blog.php') ) {}
Spero sia utile.

Questo ha funzionato per me... Anche quando entro nei singoli articoli, il menu del blog rimane attivo. Con questo codice, puoi sempre puntare alla pagina del blog.
[Nota: Questo funzionerà solo se il tuo blog è impostato come 'Pagina degli articoli']
<li <?php if(get_post_type() == 'post' )
{echo 'class="current-menu-item"';} ?> >
<a href="<?php echo site_url('/blog');?>">
Blog
</a>
</li>
