How to Make Different Templates for Categories and Subcategories in WordPress

In the base template hierarchy, you can use the following category templates:

  • category-{slug}.php
  • category-{id}.php
  • categories.php

But, if you need to apply different php templates for categories and subcategories, you can use the category_template hook and check if the current category has a parent element, in which case load e.g. subcategory.php:

function wpz_subcategory_template( $template ) {
	if ( is_category() && 0 < get_queried_object()->category_parent ) {
		$template = locate_template( 'subcategory.php' );
	}
	return $template;
}
add_filter( 'category_template', 'wpz_subcategory_template' );

If your task is to make different templates for each nesting level, such as this:

  • continent
    • country
      • city

So, we have to use the following logic: first we look if the city has a child element, if not, we call the template for the city. The rest of the code is designed to check if the category has a parent element.

function wpz_subcategory_template( $template ) {
	$cat        = get_queried_object();

	$children   = get_terms( $cat->taxonomy, array(
		'parent'     => $cat->term_id,
		'hide_empty' => false,
	) );

	if ( ! $children ) {
		$template = locate_template( 'category-country-city.php' );
	} elseif ( 0 < $cat->category_parent ) {
		$template = locate_template( 'category-country.php' );
	}

	return $template;
}
add_filter( 'category_template', 'wpz_subcategory_template' );

How useful is the publication?

Click on a star to rate it!

Average score 3.5 / 5. Number of grades: 2

No ratings yet. Rate it first.

Similar posts

Why Files with Identical Content (*.js, *.php, *.css) Can Have Different Sizes?

When developers compare files with identical content but notice that their sizes differ, it can be perplexing. Let’s explore why this happens and what factors influence the size of files with extensions like *.js, *.php, and *.css. 1. File Encoding One of the key factors affecting file size is text encoding. The most common encodings…
Read more

How to transfer a site from dle to WordPress?

Transferring a website from DLE (DataLife Engine) to WordPress can be a complex process, especially if the site has a lot of content. Here’s a step-by-step guide: 1. Preparation 2. Export Data from DLE DLE uses its own database structure, so you’ll need to export data and convert it into a format compatible with WordPress:…
Read more