web-dev-qa-db-fra.com

Comment cibler uniquement la page de couverture dans theme/plugin?

Je voudrais allumer la page de couverture SEULEMENT. Pages suivantes non paginées (comme? Paged = 2). Je veux sortir certaines sorties uniquement sur la "vraie" page de couverture du site.

J'ai essayé:

<?php if (is_front_page() && get_query_var('paged', 1) == 1 || 0): ?>

mais cela ne fonctionne que si la variable paged est présente (ex: domain.com?paged=1).

1
jonathanbell

Vous avez une idée fausse à propos de is_front_page(). Regardons la source:

public function is_front_page() {
    // most likely case
    if ( 'posts' == get_option( 'show_on_front') && $this->is_home() )
        return true;
    elseif ( 'page' == get_option( 'show_on_front') && get_option( 'page_on_front' ) && $this->is_page( get_option( 'page_on_front' ) ) )
        return true;
    else
        return false;
}

Donc, à partir de ce qui précède, is_front_page() retournera vrai sur

  • La page de couverture statique ( lors de la lecture du paramètre est définie sur Front page) et chaque page paginée de la page de couverture statique. /page/2/ etc retournera true car il ne s'agit que d'une page paginée de la page de garde statique

  • La page d'accueil lorsque le paramètre de lecture est défini sur Your latest posts, ainsi que toutes les pages paginées de la page de publication.

is_front_page() retournera false sur:

  • La page de blog quand une page d'accueil statique est définie et que les pages de messages sont définies avec Posts page. Cependant, is_home() retournera true ici

  • Toute autre page qui n'est pas la page d'accueil ou la page d'accueil statique.

Vous pensez à is_paged(). Cette condition renverra false sur la première page d'une requête paginée et retournera true sur une autre page d'une requête paginée.

Dans cet esprit, vous auriez probablement besoin de ce qui suit

if (    is_front_page() // Can change to is_home()
     && !is_paged() // Use the NOT operator to return true on page one, false after that
) {
    // Do what you need to do
}
3
Pieter Goosen