I have an Index.php with a basic loop with this query before:

    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $args = array(
      'category_name' => 'work',
      'orderby' => 'asc',
      'paged' => $paged

Which works. But when I count the amount of pages using max_num_pages it says there are 5 pages worth of posts in the 'category_name' => 'work' but I know that there are not and whats happening is its including the other posts outside of this category.

How do I stop that from happening and get the loop to just display the actual amount of pages containing posts categorised with 'work' only?

  • Something like this? function vs_pre_get_posts( $query ) { if ( is_home() && $query->is_main_query() ) { $query->set( 'category__not_in', array( 13 ) ); } } add_action( 'pre_get_posts', 'vs_pre_get_posts' );
    – Victor
    Commented Jan 26, 2014 at 19:43

1 Answer 1


query_posts() should not be used in general and especially when dealing with pagination.

You need to be making adjustments before template is reached, usually via hook, on which there is plenty of material on site.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.