Skip to main content Accessibility Feedback

Checking for pagination and the last post in WordPress

Today, I want to share two simple functions you can use to check if pagination exists on a particular page, and also check if a particular post is the last one on the page.

Creating your helper functions

Add these functions to your functions.php file:

/**
 * If more than one page exists, return TRUE.
 */
function is_paginated() {
    global $wp_query;
    if ( $wp_query->max_num_pages > 1 ) {
        return true;
    } else {
        return false;
    }
}

/**
 * If last post in query, return TRUE.
 */
function is_last_post($wp_query) {
    $post_current = $wp_query->current_post + 1;
    $post_count = $wp_query->post_count;
    if ( $post_current == $post_count ) {
        return true;
    } else {
        return false;
    }
}

In your template files

To check if a page is paginated, use this conditional script:

<?php if ( is_paginated() ) : ?>
    // Do stuff...
<?php endif; ?>

To check if a post is the last one on the page, include this snippet in the Loop:

<?php if ( is_last_post($wp_query) ) : ?>
    // Do stuff...
<?php endif; ?>

Why would you need this?

On the design of this site at time of writing, I add an <hr> element between all posts except the last one, like this:

<?php if ( !is_last_post($wp_query) ) : ?>
    <hr>
<?php endif; ?>

Similarly, I’ll add page navigation on paginated sections only:

<?php if ( is_paginated() ) : ?>
    <nav>
        <hr>
        <p class="text-center"><?php posts_nav_link( '   •   ', '← Newer', 'Older →' ); ?></p>
    </nav>
<?php endif; ?>

Hope that helps!