Comment savoir si je suis sur la première page de pagination?

22

Comment déterminer si je suis sur la toute première page de pagination? J'utilise WP_Pagenavi. Je veux exécuter une fonction uniquement sur la première page de la pagination. J'ai vérifié le query_var 'paged', il est mis à 0 sur cette page, puis 2, 3 et ainsi de suite dans les pages suivantes (1 est manquant!) ... Quelqu'un connaît une solution propre?

Merci.

Rutwick Gangurde
la source

Réponses:

24
// get current page we are on. If not set we can assume we are on page 1.
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
// are we on page one?
if(1 == $paged) {
    //true
}
Brady
la source
4
C'est correct, mais appeler get_query_var( 'paged' )deux fois est redondant. Le deuxième paramètre facultatif de cette fonction est la valeur par défaut. Donc, vous pouvez le simplifier pour: $paged = get_query_var( 'paged', 1 );
Linnea Huxford
Août 2017: Celui-ci ne fonctionne pas pour moi, sa sortie 1 sur chaque page. Cependant, la réponse de Michael a parfaitement fonctionné.
Surjith SM
32

si vous voulez seulement savoir que vous êtes sur la première page d'une page paginée, essayez is_paged():

if ( !is_paged() ) {
  // first page of pagination
}
Michael
la source
Celui-ci a fonctionné pour moi. (Août 2017). D'une manière ou d'une autre, la réponse est indiquée comme ne fonctionnant pas ..
Surjith SM
Excellent, propre et simple.
Trace DeCoy
4

Je cherchais un moyen simple de déterminer s'il fallait ou non utiliser la posts_nav_link()fonction et toutes les solutions que j'ai trouvées en ligne étaient soit trop complexes soit peu fiables. Par exemple, beaucoup de gens ont suggéré d'utiliser la $pagedvariable globale, mais j'ai trouvé que cette variable renvoyait la même valeur pour la première page, même lorsque la première page était la seule page!

Donc, j'ai creusé dans le wp-includes/link-template.phpfichier et j'ai trouvé que la posts_nav_link()fonction sort simplement la valeur de retour d'une autre fonction:

/**
 * Display post pages link navigation for previous and next pages.
 *
 * @since 0.71
 *
 * @param string $sep Optional. Separator for posts navigation links.
 * @param string $prelabel Optional. Label for previous pages.
 * @param string $nxtlabel Optional Label for next pages.
 */
function posts_nav_link( $sep = '', $prelabel = '', $nxtlabel = '' ) {
    $args = array_filter( compact('sep', 'prelabel', 'nxtlabel') );
    echo get_posts_nav_link($args);
}

En utilisant ces connaissances, nous pouvons créer un moyen simple et efficace pour déterminer si nous devons ou non ajouter des liens pour naviguer entre les pages:

$posts_nav = get_posts_nav_link();
if(empty($posts_nav)) {
    // do not use posts_nav_link()
} else {
    // use posts_nav_link()
}

Publié à l'origine sur mon blog ici .

iglvzx
la source