There’s a few posts about getting sub-categories to use the same template as their parent but I want to do something slightly different.

I have a category 67, and I want all sub-categories of 67 to use a specific template. Not the default template, and not the custom category-67.php template.

How do I do that?

I have the following code in functions.php, but it also seems to change the template of category-67

// use specific template depending on category
function myTemplateSelect() {
    if (is_category() && !is_feed()) {
        if (is_category(get_cat_id('67')) || cat_is_ancestor_of(get_cat_id('67'), get_query_var('cat'))) {
            load_template(TEMPLATEPATH . '/category-slider.php');
            exit;
        }
    }
}

 add_action('template_redirect', 'myTemplateSelect');

Eventually I will want to add a few more categories to this also.

Any ideas?

Thanks

1 Answer
1

I would recommend using the category_template filter – just check if the current category is an ancestor of 67:

function wpse_179617_category_template( $template ) {
    if ( cat_is_ancestor_of( 67, get_queried_object_id() /* The current category ID */ ) )
        $template = locate_template( 'category-slider.php' );
    return $template;
}

add_filter( 'category_template', 'wpse_179617_category_template' );

Leave a Reply

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