Verificare se la pagina corrente è la pagina Blog

19 lug 2013, 14:20:02
Visualizzazioni: 162K
Voti: 52

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.

0
Tutte le risposte alla domanda 11
2
68

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() e is_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
}
3 ago 2014 06:50:20
Commenti

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.

Giraldi Giraldi
3 ago 2014 10:03:14

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

atwellpub atwellpub
28 mag 2017 03:32:40
2
30

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.

18 apr 2014 11:26:49
Commenti

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.

Tim Malone Tim Malone
18 apr 2016 01:04:45

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.

Clarus Dignus Clarus Dignus
14 apr 2019 15:34:16
2
19

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

17 apr 2016 13:33:00
Commenti

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!

Tim Malone Tim Malone
18 apr 2016 01:07:04

In realtà è l'unica buona risposta qui, avrebbe dovuto ricevere più voti positivi.

LachoTomov LachoTomov
23 dic 2017 16:16:41
0

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
}
16 mag 2018 21:58:51
2

Puoi usare..

<?php if ( is_single() ) { ?>

Fai qualcosa qui

<?php } ?>

per verificare se si tratta di un singolo articolo del blog. Oppure...

<?php if ( is_home() ) { ?>

Fai qualcosa qui

<?php } ?>

per verificare se si tratta della homepage del blog

19 lug 2013 14:23:17
Commenti

Non funziona se hai cambiato la pagina del blog

cdmckay cdmckay
9 ott 2014 18:09:22

Questo non fornisce una risposta corretta all'OP. Indica che sei su un singolo post, non sulla "pagina del blog".

butlerblog butlerblog
27 dic 2017 16:29:08
2

Utilizzo questo metodo

// Ottieni le classi del body come array
$body_classes = get_body_class();
// Verifica se la classe "blog" è presente nell'array
if(in_array("blog", $body_classes)) {
   // Esegui azioni
}
27 set 2015 14:07:57
Commenti

Non è l'ideale, non lo consiglierei.

Uriahs Victor Uriahs Victor
29 set 2021 01:40:14

Non mi affiderei a una classe CSS.

Azamat Azamat
31 ago 2022 08:13:36
0

C'è un metodo astuto.

http://example.com/blog

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
}
4 ott 2016 16:04:05
0

PAGINA INIZIALE

if(is_home() && is_front_page() || is_front_page()): // homepage statica o predefinita
 ...
endif;

BLOG

if(is_home() && !is_front_page()): // blog
 ...
endif;
17 dic 2016 06:51:06
0

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.

16 set 2017 11:01:56
0

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.

21 set 2021 22:11:40
0

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'] Descrizione immagine qui

   <li <?php if(get_post_type() == 'post' )
     {echo 'class="current-menu-item"';} ?> >
       <a href="<?php echo site_url('/blog');?>">
         Blog
       </a>
    </li>
2 dic 2021 22:32:33