Pagination of posts per page in a specific category using a template

Clients have been asking for custom amount of posts per page in certain categories. To do this, I have to create a new category template in the theme. For the ‘testimonials’ category, I created a file in my theme directory named category-testimonials.php. The following code is meat of this page’s content:

<?php
 $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

 query_posts( array_merge( $wp_query->query, array(
   'paged'    => $paged,
   'cat' => 5,
   'posts_per_page' => 10
 ) ) );
 ?>

 <?if ( have_posts() ) : while ( have_posts() ) : the_post();?>
     <?the_content();?>
 <?endwhile; endif;?>
 <?php wp_reset_query(); 
?>

The $paged checks to see if the category has more than one page, otherwise it defaults to 1 page. From there, we build the query_posts() options array.

  • paged – How many pages the results will be broken into
  • cat – Which category I want displayed. In my case, category of if ‘5’.
  • posts_per_page – How many pages I want displayed per page. Every other category is set to 5 posts per page, but I want this one to be 10.

The rest of the loop is unchanged. There you have it, a category template displaying a custom amount of posts per page with pagination.