First rule of using query_posts(): don’t. Use the ‘request’ filter instead.

Ever since I’ve taken over development of the WP-PageNavi plugin, I keep seeing people opening support topics like this:

“PageNavi doesn’t show the correct posts”

“Page numbers don’t work with PageNavi”

etc.

Most of the time, your theme is just using query_posts() wrong.

So here is the correct way to make paging work using query_posts():

Say you have something like this:

query_posts('cat=8');

or like this:

query_posts( array( 'cat' => 8 ) );

You just need to pass along the ‘paged’ query var from the main query:

query_posts( array( 'cat' => 8, 'paged' => get_query_var('paged') ) );

If that doesn’t work, you can also try passing the ‘page’ query var:

query_posts( array( 'cat' => 8, 'paged' => get_query_var('page') ) );

Also see the Codex page on query_posts().