
Extension of Template Hierarchy
- October 12, 2015
- Leave a comment
At some stage of template development, we might need to develop a template which is not available by following the template hierarchy provided by WordPress. One option is that we can put a condition into our template code and display that part on becoming the condition true. However, the standard solution is extending template hierarchy.
We may need to have a different template for a single post on the basis of a category which is not possible with the default template hierarchy of WordPress. For example, we can have a single template for custom post type by creating template file name as “single-cusotmpost.php” because “single-catslug.php” or “single-catid.php” are not allowed. But we can extend the template hierarchy to achieve category based single template by adding single_template filter. To add this filter, follow the steps mentioned below:
- Create a file name as single-catslug.php
- Add filter like add_filter(‘single_template’, ‘single_cat_template’);
- Create function single_cat_template to handle template name processing and redirection
- Add the following code into single_cat_template function:
1234567function my_single_template($single) {$categories = get_the_category();foreach(get_the_category() as $cat){if(file_exists(TEMPLATEPATH . '/single-' . $cat->slug . '.php'))}}
User Comments