I’m using the Default Post Type post
for various purposes. To sort them I’m using different categories. And I’m designing different category layout using the slug preference, like: category-book.php
, category-notice.php
etc., and everything was just fine.
But just a moment ago found that, any subcategory of the parent category ‘book’ is redirecting to index.php
(or archive.php
, or category.php
) because they are not recognizing their parent’s category template (category-book.php
), because their slug is different.
How can I make the child categories recognize their parent’s template design?
Do I have to make a custom template using a WP_Query()
for that?
3 s
Thanks to @Rarst for guiding me to the right direction. Using his direction I googled again and again and found a blog article of WerdsWords with an excellent bit of code snippet filtered to category_template
as Rarst suggested me, and the good news is: it worked for my cause:
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' );
Link to the article:
- Force sub-categories to use the parent category template — werdswords.com