Custom Category/Post Template Plugin.

This is probably the single most valuable plugin to date (exaggeration?). It basically checks to see if a post in a certain category, and then assigns that post a separate custom template. Genius. And it doesn’t stop there. It also, allows you to assign a custom template to any post ID which means you can make one specific page look completely different than all of the others — an extremely powerful plugin.

I found this over at wpelements.com in an old feed article. The plugin was created by Ryan Boren way back in 2005 and it is still very much effective today.

Here’s the code. Enjoy.

Updated to use dynamic categories on 10/11/2010


/*
Plugin Name: Custom Post Templates
Plugin URI: <a rel="nofollow" href="http://boren.nu/">http://boren.nu/</a>
Description: Load custom single post templates.
Author: Ryan Boren
Author URI: <a rel="nofollow" href="http://boren.nu/">http://boren.nu/</a>
Author: Lon F. Binder
Author URI: <a rel="nofollow" href="http://www.foodmayhem.com/">http://www.foodmayhem.com/</a>
Version: 0.9.1
*/

function cpt_custom_post_template($template) {
global $wp_query;

$post = $wp_query-&gt;post;
$id = $post-&gt;ID;

$templatePath = get_template_directory();

// If a template exists for this post ID, load it.
if (file_exists("$templatePath/single-$id.php")) {
return "$templatePath/single-$id.php";
}

// If a template exists for this post's category ID, load it.
$categories = get_the_category($id);
// TODO: ascend parents for hierarchical single cat templates
foreach ($categories as $cat) {
$catId = $cat-&gt;cat_ID;
if (file_exists("$templatePath/single-cat-$catId.php")) {
return "$templatePath/single-cat-$catId.php";
}
}

return $template;
}

add_filter('single_template', 'cpt_custom_post_template');