A couple of times in the last several years, I’ve needed sub-categories to inherit their parent’s archive template, but it’s just not something the Template Hierarchy supports. I’ve seen several plugins that tried and failed to do it, so finally I wrote a little filter that in my testing, works any number of levels deep, from sub-sub-categories to sub-sub-sub-categories. Enjoy!
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | function new_subcategory_hierarchy() { $category = get_queried_object(); $parent_id = $category ->category_parent; $templates = array (); if ( $parent_id == 0 ) { // Use default values from get_category_template() $templates [] = "category-{$category->slug}.php" ; $templates [] = "category-{$category->term_id}.php" ; $templates [] = 'category.php' ; } else { // Create replacement $templates array $parent = get_category( $parent_id ); // Current first $templates [] = "category-{$category->slug}.php" ; $templates [] = "category-{$category->term_id}.php" ; // Parent second $templates [] = "category-{$parent->slug}.php" ; $templates [] = "category-{$parent->term_id}.php" ; $templates [] = 'category.php' ; } return locate_template( $templates ); } add_filter( 'category_template' , 'new_subcategory_hierarchy' ); |