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.