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

23

Je vois beaucoup le code suivant dans les fichiers index.php. Je comprends que is_front_page()renvoie vrai lors de l'affichage de la page d'accueil du site (qu'il s'agisse de l'index des articles de blog ou d'une page statique), tandis que is_home()renvoie vrai lors de l'affichage de l' index des articles de blog (qu'il soit affiché sur la page d'accueil ou sur une page statique). Je suis encore quelque peu perplexe quant à l'utilisation du code suivant -

<?php if ( have_posts() ) : ?>

    <?php if ( is_home() && ! is_front_page() ) : ?>
        <header>
            <h1 class="page-title screen-reader-text"><?php single_post_title(); ?></h1>
        </header>
    <?php endif; ?>

Toute explication de la raison pour laquelle ce morceau de code est si populaire est grandement appréciée.

olliew
la source

Réponses:

15

Cela affichera le titre de la page lorsqu'une page statique est configurée pour afficher les publications.

Par exemple

Je montre des messages sur ma page d'accueil ... Cela ne fera rien.

Si je dis, par exemple, afficher des articles sur la page intitulée News ... Cela affichera News dans H1.

Ceci est utilisé pour que le titre de la page soit affiché, chaque fois que les articles sont affichés sur une page, mais rien lorsque les articles de blog sont affichés sur la page d'accueil (page d'accueil).

Nous le faisons parce que s'il est sur la page d'accueil ... il affichera le titre du premier message, le faisant apparaître deux fois (une fois en haut au premier semestre et à nouveau lorsque les messages sont bouclés).

Shamee
la source
Merci Shramee. J'ai trouvé le titre de la page d'index de mon blog dans un <h1> en essayant de le comprendre, mais il n'apparaît réellement nulle part. Je pense que certains thèmes ne l'utilisent que pour aider les utilisateurs de lecteurs d'écran, puis masquent le texte réel, ce qui est un peu déroutant pour les débutants s'il n'est pas commenté / documenté.
olliew
Eh bien ... Cela aide à savoir dans quel contexte les publications sont utilisées, (comme dans l'exemple ci-dessus pour News) mais il est principalement là pour le référencement , H1 joue un grand rôle en aidant les robots de recherche à mieux comprendre le contenu de la page.
Shramee
26

Voici comment le faire correctement:

if ( is_front_page() && is_home() ) {
// Default homepage

} elseif ( is_front_page()){
// Static homepage

} elseif ( is_home()){

// Blog page

} else {

// Everything else

}

C'est le seul (bon) moyen d'afficher ou de modifier le contenu de votre page d'accueil et de votre page de blog.

Md. Abunaser Khan
la source
4

Je ne suis pas sûr de «populaire», cela ne me semble pas vrai (mais je ne regarde pas autant de thèmes).

Vous semblez bien comprendre ce que fait chaque conditionnel, donc cela ne devrait pas vous prêter à confusion. Cela combine les conditions pour vérifier que l'index du blog est affiché et qu'il n'est pas en première page.

Ah, la raison pour laquelle single_post_title()je suppose que c'est qu'il affiche le titre pour $wp_query->queried object(mis en place par la requête principale comme contexte actuel), plutôt que $postglobal (mis en place par boucle d'itération).

Dans certaines circonstances, ce sera le même, mais pas dans le cas où la condition vérifie. La boucle contiendra des articles , mais l'objet interrogé sera la page (sauf si je mélange les choses :).

Rarst
la source
J'ai parcouru de nombreux modèles récemment et c'est très courant. Vous avez raison de comprendre ce que fait la boucle, je ne comprends tout simplement pas pourquoi les gens choisissent de le faire de cette manière particulière. Pourquoi utiliser single_post_title plutôt que the_title ()?
olliew