Just a quick one. I’ve been creating a theme that uses three different post custom post types and I just couldn’t get pagination working. By pagination I just mean a link to see older / newer posts. This was working fine for standard posts but not my custom post types.
My Set up
So for example I had a custom post type called Events and I was wanting to display these in a page called page-events.php, so the paginated pages would have the slug, domain/events/page/2 this just would not work.
<?php $temp = $wp_query; $wp_query = null; $wp_query = new WP_Query(); $wp_query->query('showposts=6&post_type=news'.'&paged='.$paged); while ($wp_query->have_posts()) : $wp_query->the_post(); ?> <!-- LOOP: Usual Post Template Stuff Here--> <?php endwhile; ?> <nav> <?php previous_posts_link('« Newer') ?> <?php next_posts_link('Older »') ?> </nav> <?php $wp_query = null; $wp_query = $temp; // Reset ?>
The Solution
After a little bit of searching around I finally found the answer. Its so straight forward, simply call your page something other than what you have called your CPT. So in my case I renamed my page from events to latest-events in the WordPress admin and therefore in my theme my PHP file was now called latest-events.php. With this change made my pagination worked a treat.
Just wanted to document this as I’m sure many others will experience this annoying issue. If this helps just one person it will be worth while.
Thanks for reading