web-dev-qa-db-fra.com

Comment déterminer si je suis sur la première page de la pagination?

Comment puis-je 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é la requête_var 'paginée', elle a la valeur 0 sur cette page, puis 2, 3 et ainsi de suite dans les pages suivantes (il manque 1!) ... Quelqu'un connaît une solution propre?

Merci.

21
Rutwick Gangurde
// 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
}
23
Brady

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
}
32
Michael

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

J'ai donc creusé dans le fichier wp-includes/link-template.php et constaté que la fonction posts_nav_link() produisait 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 cette connaissance, 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()
}

Initialement posté sur mon blog ici .

4
iglvzx