Vérifier si la page actuelle est la page de blog

33

Je suis nouveau sur WordPress. Je cherche un moyen de vérifier si la page en cours est la page de blog dans le code du fichier d’en-tête.

J'ai vérifié mais je ne peux pas trouver un moyen. Aidez-moi, Pls.

KarSho
la source

Réponses:

42

Si par " page de blog ", vous entendez une page statique définie comme page de messages dans les paramètres de lecture , vous pouvez le vérifier en procédant comme suit:

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

Lorsque vous utilisez is_home()et is_front_page(), vous devez les utiliser dans le bon ordre pour éviter les bugs et tester chaque configuration utilisateur.

(Source: Tags conditionnels - La page du blog )

Ou simplement:

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

Ou plus simplement (je suppose):

if ( is_home() ) {
  // blog page
}
Giraldi
la source
Un cas d’utilisation à utiliser if ( !is_front_page() && is_home() ), du moins à mon avis, est si vous distribuez un thème avec un style de disposition différent pour la page d’accueil par défaut et la page de blog .
Giraldi
Je trouve que is_front_page () retournera true que l'archive de blog ou une page soit sélectionnée ou non. Besoin de vérification. codex.wordpress.org/Function_Reference/is_front_page
atwellpub
19

Vous pouvez utiliser les éléments suivants dans le fichier functions.php de votre thème:

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

Et mettez ceci dans le fichier que vous vérifiez:

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

Vous pouvez utiliser des points d'ancrage dans votre fichier functions.php pour accrocher ce qui précède, pour que celui-ci apparaisse sur chaque page.

Vagish
la source
1
C'est une excellente réponse si vous voulez déterminer si vous êtes sur une page de blog, mais pas nécessairement sur la page de blog (comme dans la page d'accueil du blog). Voir la réponse de @ Giraldi pour cela.
Tim Malone
J'ai supposé à tort que is_blog () existe parce que is_page () existe. Il ne m'est pas venu à l'esprit de consulter l' index officiel WordPress Conditional Tags . J'ai pu appliquer efficacement cette solution à l'aide du plugin Widget Logic.
Clarus Dignus le
11

Si par "page de blog", vous entendiez une page statique définie comme page de messages dans Reading:

global $wp_query;

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

PS Cette solution fonctionne également sur l' action template_redirect

Sergey Repin
la source
Bonjour repinsa, bienvenue sur WPSE :) Merci d’avoir ajouté votre réponse. Il a été un peu rejeté, probablement parce qu'il y a une erreur de syntaxe dans le code (il manque un point-virgule après le global $wp_query), mais aussi parce qu'il ne répond pas complètement à la question. C'est une fonction, mais l'OP a demandé comment résoudre cela dans son fichier d'en-tête - il aurait donc besoin d'un peu plus d'explications sur ce qu'il faut mettre et où. Encore une fois, bienvenue, heureux de vous avoir ici!
Tim Malone
2
C'est en fait la seule bonne réponse ici, aurait dû avoir plus de votes positifs.
Lacho Tomov
2

Pour obtenir la page d'index du blog , j'ai trouvé que

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

ne fonctionne pas pour moi, je devais utiliser la fonction get_option ('page_for_posts') pour identifier la page de blog post_id, ma réponse est

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

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

    //blog page
}
J.Wang
la source
0

Il y a une méthode délicate.

http://example.com/blog

Supposons que si votre slug de page de blog est blog, vous pouvez utiliser ce code.

global $wp_query;
if($wp_query->query['pagename']=='blog'){
// this is blog page
}
Rajilesh Panoli
la source
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;
DevWL
la source
0

Je suppose que c'est très simple, j'étais dans la même situation et j'ai utilisé la technique suivante qui consiste à utiliser le slug de page.

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

Mais assurez-vous que vous n'avez pas sélectionné page d'accueil pour afficher les articles de blog récents et que vous avez défini une page spécifique pour les blogs tels que blog ou actualités, etc., utilisez simplement ce slug de page et tout irait bien.

Rahman Zeb
la source
0

Vous pouvez utiliser..

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

Do stuff here

<?php } ?>

pour vérifier si c'est un seul post de blog. Ou...

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

Do stuff here

<?php } ?>

pour vérifier si c'est la page d'accueil du blog

Xav
la source
2
Ne fonctionne pas si vous avez changé la page du blog
cdmckay
Cela ne fournit pas une réponse correcte au PO. Cela indique que vous êtes sur un seul post, pas "la page du blog".
butlerblog
-1

J'utilise de cette façon

// 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
}
John Smith
la source