Simple Custom Post Type Archives

Adds permalink support, template files, and a new conditional for public custom post type archives.

NOTE: WordPress 3.1 incorporates custom post type archives into core. Look for my upcoming blog post for details and a migration path!

WordPress 3.0 opens the door for entirely new content management possibilities with custom post types. As awesome as it is, the first version to implement custom post types is missing a few things. This plug-in patches one of those holes: templates and friendly permalinks that enable “archives” for custom post types, much the like the “blog home” is an archive for all “post” post types.

This plug-in will only add custom post type archives for non-hierarchical (post-like), public custom post types with a “slug” or permalink.

For example, suppose you have a custom post type Movies. WordPress 3.0 takes care of permalinks for individual movie content, for example, http://yourblog.com/movies/casa-blanca/. You might think you could get an archive of all recently added movies (just like the blog home is an archive of all recently added posts) by going to http://yourblog.com/movies/, but this isn’t supported out of the gate. You can do it without permalinks by going to http://yourblog.com/?post_type=movies, but even then, you’re forced to use the index.php template file in your theme. This plug-in enables archive permalinks (yourblog.com/movies), adds two new template files in the hierarchy (i.e. type-movies.php and type.php), and adds a new is_custom_post_type_archive conditional you can use in your theme!

  • Adds support for custom post type archive permalinks, i.e. yourblog.com/custom-post-type-name – including paging (/page/2/) and feeds (/feed/)
  • Adds two new template files to the hierarchy, type-(custom-post-type-name).php and type.php
  • Adds new body classes to custom post type archives, custom-post-type-archive and custom-post-type-(post-type-name)-archive
  • Fixes the is_home conditional check on custom post type archives (incorrectly reports true by default)
  • Adds a new conditional, is_custom_post_type_archive for use in your themes: can optionally check against a specific post type by passing name of post type
  • Fixes the wp_title output on custom post type archives to show the custom type’s label
  • Automatically adds feed links for custom post type archives when on a custom archive or singular custom post type if automatic feed links is enabled in your theme

What didn’t make it in this pre-1.0 release:

  • New navigation menu widget for easily adding custom post type archives to navigation

Please keep in mind that robust custom post type support is new to 3.0, and although this plug-in was aggressively tested, it’s hard to test it with all possible custom post type setups. For this reason, along with the bullets listed above, I’m considering this a “beta” – in the Google sense – or pre-1.0 release.

You’re welcome to use the code in your own custom post type plug-ins or themes (the code is GPL), but please include attribution to the author.

  • Rating
  • Requires 3.0+
  • Downloads 15,556
  • Updated 2010-08-19
  1. A big thank you for this plugin, solved a problem I’ve been having for a few days and can’t seem to get a hold on, in two clicks. Headache gone. ;) (Not sure why I’m having the problem to begin with since I’m running 3.1.2, but by now I’m just glad that it’s gone! lol)

  2. Hi Jake,

    Thanks for the plugin. I installed this and was hoping to uninstall with an upgrade to WP >3.1, but whenever I deactivate the plugin my entire site doesn’t fetch anything bar the header…

    Any help would be appreciated :)

  3. I am running into challenges with archive and category widget using multiple custom post types. They only seem to work with blog posts. I found some code to get them to work with ALL post types, but this is not ideal either. Do you have any insight or recommendation on how to work with this?

  4. thanks for this problem! solves quiet a few problem i struggled for some days!

  5. I’m working on a site created by someone else that used this plugin. I’m trying to disable it, but some content disappears. I noticed above you were talking about a blog post with a migration path, but I couldn’t find such a post on your site. What do I need to do to get that content to reappear?

    Thanks,

    -John

  6. I really like your blog.. very nice colors & theme. Did you design this website yourself or did
    you hire someone to do it for you? Plz answer back as I’m looking to create my own blog and would like to know where u got this from. cheers

    • We designed and built it ourselves.

Finely crafted websites & tools that make the web better.