-
-
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?