-
-
Save GaryJones/1258784 to your computer and use it in GitHub Desktop.
<?php | |
add_filter( 'template_include', 'ja_template_include' ); | |
/** | |
* Apply a template to all subcategories of a certain parent category. | |
* | |
* @author Jared Atchison | |
* @link http://www.jaredatchison.com/2011/10/02/taking-advantage-of-the-template_include-filter/ | |
* | |
* @param string $template Existing path to template file | |
* @return string Potentially amended path to template file | |
*/ | |
function ja_template_include( $template ) { | |
// Parent category (News) ID | |
$my_parent_category_id = 7; | |
if ( ! is_category() ) | |
return $template; | |
// Get category information | |
$category_info = get_category( get_query_var( 'cat' ) ); | |
if ( $category_info->parent == $my_parent_category_id ) | |
return get_stylesheet_directory_uri() . '/subcategory-news.php'; | |
return $template; | |
} |
@ericrasch - absolutely. If you look at http://codex.wordpress.org/Function_Reference/get_category you'll see that there are lots of properties available instead of parent
on line 23 - it sounds as though you want to use slug
.
Be aware however, that slugs can change (by un-informed but well-meaning clients), as can names, which is why it's usually safer to go with an ID, and add a comment for developers reading the code, as per my example.
Just created a fork that's more dynamic. In this version you hardcode the template file ('/subcategory-news.php') into the function.
You could also check if there's a file called 'subcategory-' + the parent category slug + .php in the theme folder and use that one (like I do in my fork).
I've forked to better handle the hierarchical order... see https://gist.github.com/sardbaba/5013763
Wondering if there's a way to use the slug name on lines 15/23 rather than an ID?