How do I determine if I'm on the very first page of pagination? I'm using WP_Pagenavi. I want to run a function only on the first page of the pagination. I checked the query_var 'paged', it's set to 0 on this page, and then 2, 3 and so on in the later pages (1 is missing!)... Anyone knows a clean solution?

Thanks.

up vote 23 down vote accepted
// 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
}
  • 3
    This is correct, but calling get_query_var( 'paged' ) twice is redundant. That function's optional second parameter is the default value. So, you could simplify it to: $paged = get_query_var( 'paged', 1 ); – Linnea Huxford Nov 5 '16 at 21:38
  • Aug 2017: This one not working for me, Its outputting 1 on every page. However Michael's answer worked perfect. – Surjith S M Aug 17 '17 at 15:38

if you only want to know that you're on the first page of a paginated page try is_paged():

if ( !is_paged() ) {
  // first page of pagination
}
  • This one worked for me. (Aug 2017). Somehow answer marked as correct not working.. – Surjith S M Aug 17 '17 at 15:38
  • Excellent, clean and simple. – Trace DeCoy Feb 28 at 9:52

I was looking for a simple way to determine whether or not to use the posts_nav_link() function and all solutions I found online were either too complex or unreliable. For example, many people suggested using the $paged global variable, but I found that this variable returned the same value for the first page, even when the first page was the only page!

So, I dug into the wp-includes/link-template.php file, and found that the posts_nav_link() function simply outputs the return value of another function:

/**
 * 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);
}

Using this knowledge, we can create a simple and effective way to determine whether or not we need to add links to navigate between pages:

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

Originally posted on my blog here.

Your Answer

 
discard

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.