Controlla se la pagina corrente è la Pagina Blog


33

Sono nuovo di WordPress. Sto cercando un modo per verificare se la pagina corrente è la pagina del blog nel codice del file di intestazione.

Ho controllato ma non riesco a trovare un modo. Aiutami, Pls.

Risposte:


42

Se per " pagina del blog " intendevi una pagina statica impostata come pagina dei post nelle Impostazioni di lettura , puoi verificarla in questo modo:

if ( is_front_page() && is_home() ) {
  // Default homepage
} elseif ( is_front_page() ) {
  // static homepage
} elseif ( is_home() ) {
  // blog page
} else {
  //everyting else
}

Quando si utilizza is_home()e is_front_page(), è necessario utilizzarli nell'ordine corretto per evitare bug e testare ogni configurazione dell'utente.

(Fonte: tag condizionali - La pagina del blog )

O semplicemente:

if ( !is_front_page() && is_home() ) {
  // blog page
}

O più semplicemente (suppongo):

if ( is_home() ) {
  // blog page
}

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

Sto trovando is_front_page () restituirà vero indipendentemente dal fatto che sia selezionato l'archivio blog o una pagina. Hai bisogno di verifica. codex.wordpress.org/Function_Reference/is_front_page
atwellpub

19

Puoi usare quanto segue nel tuo file Functions.php di temi:

function is_blog () {
    return ( is_archive() || is_author() || is_category() || is_home() || is_single() || is_tag()) && 'post' == get_post_type();
}

E quindi inseriscilo nel file che stai controllando:

<?php if (is_blog()) { echo 'You are on a blog page'; } ?>

Puoi usare Hooks nel tuo file Functions.php per agganciare quanto sopra, per farlo apparire su ogni pagina.


1
Questa è un'ottima risposta se si desidera determinare se ci si trova in una pagina del blog, ma non necessariamente nella pagina del blog (come nella home page del blog). Vedi la risposta di @ Giraldi per questo.
Tim Malone,

Ho assunto erroneamente che is_blog () esiste perché is_page () esiste. Non mi è venuto in mente di consultare l' indice ufficiale dei tag condizionali di WordPress . Sono stato in grado di applicare efficacemente questa soluzione utilizzando il plug-in Widget Logic.
Clarus Dignus,

11

Se per "pagina blog" intendevi una pagina statica impostata come pagina post nella lettura:

global $wp_query;

if ( isset( $wp_query ) && (bool) $wp_query->is_posts_page ) {
    //static blog page
}

PS. Questa soluzione funziona anche sull'azione template_redirect


Ciao repinsa, benvenuto in WPSE :) Grazie per aver aggiunto la tua risposta. È stato un po 'votato, probabilmente perché ha 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 risolverlo nel suo file di intestazione, quindi potrebbe aver bisogno di una spiegazione in più su cosa mettere dove. Ancora una volta, benvenuto, felice di averti qui!
Tim Malone,

2
Questa è in realtà l'unica buona risposta qui, avrebbe dovuto avere più voti.
Lacho Tomov,

2

Per ottenere la pagina dell'indice del blog , l'ho trovato

if ( !is_front_page() && is_home() ) {
  // blog page
}

non funziona per me, ho dovuto usare la funzione get_option ('page_for_posts') per identificare la Pagina Blog post_id, la mia risposta è

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

    if ( empty ( $post_id) ) {
        global $post;
        $post_id =  get_option( 'page_for_posts' );
    }

    //blog page
}

0

C'è un metodo complicato.

http://example.com/blog

Supponiamo che lo slug della pagina del tuo blog sia blog, puoi usare questo codice.

global $wp_query;
if($wp_query->query['pagename']=='blog'){
// this is blog page
}

0

HOMEPAGE

if(is_home() && is_front_page() || is_front_page()): // static or default hompage
 ...
endif;

BLOG

if(is_home() && !is_front_page()): // blog
 ...
endif;

0

Immagino che sia molto semplice trovarmi nella stessa situazione e ho usato la seguente tecnica che consiste nell'utilizzare la lumaca di pagina.

if( is_page('blog') ) {
echo "This is your blog page"; 
}

Ma assicurati di non aver selezionato la home page per visualizzare i post di blog recenti e di aver impostato una pagina specifica per blog come blog, notizie, ecc., Usa solo quella lumaca di pagina e starai bene.


0

Puoi usare..

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

Do stuff here

<?php } ?>

per verificare se si tratta di un singolo post sul blog. O...

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

Do stuff here

<?php } ?>

per verificare se si tratta della home page del blog


2
Non funziona se hai cambiato la pagina del blog
cdmckay

Ciò non fornisce una risposta corretta al PO. Questo indica che sei su un singolo post, non "la pagina del blog".
Butlerblog,

-1

Uso così

// Get body classes as array
$body_classes = get_body_class();
// Check if "blog" class exists in the array
if(in_array("blog", $body_classes)) {
   // Do stuff
}
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.