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.

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
}

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.


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


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
}

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
}

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

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.


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


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
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.