get_next_posts_link( string $label = null, int $max_page ): string|void

Retrieves the next posts page link.

Parameters

$labelstringoptional
Content for link text.

Default:null

$max_pageintoptional
Max pages. Default 0.

Return

string|void HTML-formatted next posts page link.

More Information

Gets a link to the previous set of posts within the current query.

Because post queries are usually sorted in reverse chronological order, get_next_posts_link() usually points to older entries (toward the end of the set) and get_previous_posts_link() usually points to newer entries (toward the beginning of the set).

Source

function get_next_posts_link( $label = null, $max_page = 0 ) {
	global $paged, $wp_query;

	if ( ! $max_page ) {
		$max_page = $wp_query->max_num_pages;
	}

	if ( ! $paged ) {
		$paged = 1;
	}

	$next_page = (int) $paged + 1;

	if ( null === $label ) {
		$label = __( 'Next Page »' );
	}

	if ( ! is_single() && ( $next_page <= $max_page ) ) {
		/**
		 * Filters the anchor tag attributes for the next posts page link.
		 *
		 * @since 2.7.0
		 *
		 * @param string $attributes Attributes for the anchor tag.
		 */
		$attr = apply_filters( 'next_posts_link_attributes', '' );

		return sprintf(
			'<a href="%1$s" %2$s>%3$s</a>',
			next_posts( $max_page, false ),
			$attr,
			preg_replace( '/&([^#])(?![a-z]{1,8};)/i', '&#038;$1', $label )
		);
	}
}

Hooks

apply_filters( ‘next_posts_link_attributes’, string $attributes )

Filters the anchor tag attributes for the next posts page link.

Changelog

VersionDescription
2.7.0Introduced.

User Contributed Notes

  1. Skip to note 5 content

    Usage when querying the loop with WP_Query

    Pass the $max_page parameter to the get_next_posts_link() function when querying the loop with WP_Query. To get the total amount of pages you can use the max_num_pages property of the custom WP_Query object.

    <?php
    /**
     * Set the "paged" parameter (use 'page' if the query is on a static front page).
     *
     * @var int $paged
     */
    $paged = get_query_var( 'paged' ) ? intval( get_query_var( 'paged' ) ) : 1;
    
    /** @var WP_Query $the_query */
    $the_query = new WP_Query( 'cat=1&paged=' . $paged );
    
    if ( $the_query->have_posts() ) :
    
    	// The Loop
    	while ( $the_query->have_posts() ) : $the_query->the_post();
    		the_title();
    	endwhile;
    
    	// get_next_posts_link() usage with max_num_pages.
    	echo get_next_posts_link( __( 'Older Entries', 'textdomain' ), $the_query->max_num_pages );
    	echo get_previous_posts_link( __( 'Newer Entries', 'textdomain' ) );
    
    	// Clean up after our custom query.
    	wp_reset_postdata();
    
    else :
    	?>
    	<p><?php _e( 'Sorry, no posts matched your criteria.', 'textdomain' ); ?></p>
    <?php endif; ?>

You must log in before being able to contribute a note or feedback.