Posted by & filed under WordPress.

Sometimes you need sub-categories to inherit their parent’s archive/category template. But it’s not supported by default. Here is a little filter that does that for you!

function new_subcategory_hierarchy() {

 $category = get_queried_object();
 $temp = $category;

 do {
 $parent_id = $temp->category_parent;
 $temp = get_category( $parent_id );
 } while ( $temp->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' );

 

Leave a Reply

Your email address will not be published. Required fields are marked *