query_posts()
overwrites the original query, and the pagination gets the original before the query_posts()
call and the changed after it.
Solution: Don’t use query_posts()
, filter pre_get_posts
instead. We have tons of examples for that on our site. 🙂
Here is some pseudo code (meaning: not tested).
add_filter( 'pre_get_posts', 'wpse_58843_list_cat_16' );
function wpse_58843_list_cat_16( $query )
{
// make sure this matches your template’s file name.
// See http://codex.wordpress.org/Function_Reference/is_page_template
if ( ! is_page_template( 'press.php' ) )
{
return $query;
}
$query->set( 'cat', 16 );
$query->set( 'posts_per_page', 6 );
$query->set( 'post_type', 'post' );
return $query;
}