Multiple Queries with Pagination using next_posts_link

Today I had a real problem with a WordPress website that uses multiple wp_query calls on the home page. The issue was that I could not use the next_posts_link() function properly, since WordPress ignores the “offset” parameter when creating paginated pages.

The solution I used was found here on the WordPress Codex.

Here is the code:

 1) ? ($onum) : 0;
query_posts("posts_per_page=$qry[total]&paged=$paged&showposts=$qry[1]&offset=$offset");
if (have_posts()) :
	while (have_posts()) : the_post();
		// Loop stuff
	endwhile;
endif;
// Reuse the offset variable (rather then creating a new one), setting to a new value (plus any additional offset)
// Total in first query, plus any offset, if there is one
$offset = $qry[1] + (($paged > 1) ? $onum : 0);
query_posts("posts_per_page=$qry[total]&offset=$offset&showposts=$qry[2]");
if (have_posts()) :
	while (have_posts()) : the_post();
		// Loop stuff
	endwhile;
endif;
// Again just reusing the variable and adding offset (if page is more then 1)
// First posts total, plus second posts total, plus offset (if there is one)..
$offset = ($qry[1] + $qry[2]) + (($paged > 1) ? $onum : 0);
query_posts("posts_per_page=$qry[total]&offset=$offset&showposts=$qry[3]");
if (have_posts()) :
	while (have_posts()) : the_post();
		// Loop stuff
	endwhile;
endif;
// Unset the variables (we've finished with them, no reason to hold onto them)
unset($qry,$offset,$onum);
?>

Can you think of an easier way to do this?

Posted in ,

Toby Cryns

Toby Cryns is a freelance CTO, expert WordPress consultant, and teacher.

He offers free advice to improve your freelance biz.

He also publishes small droppings every now and then to twitter.com/tobycryns and twitter.com/themightymo

Follow Toby's contributions on Github and WP.org.

2 Comments

  1. Démian on May 13, 2011 at 7:22 pm

    Hi,

    Thank you for this issue. It’s work fine for me on index.php but not for the archives pages: tags, search, category…

    Do you have a solution?

    Many thanks in advance,
    Dem.



  2. toby on May 14, 2011 at 2:33 am

    I can’t think of any reason why it wouldn’t work on categories… Please let me know if you figure this out!