How to Display Different Single Templates Based on Category in WordPress

Home » Snippets » How to Display Different Single Templates Based on Category in WordPress
0

Created with:

Visibility: 

public

Creator: WPTurbo Team

Customize with WPTurbo AI
X

Add Snippet To Project

New Project
Add To Existing Project

Are you looking to customize the appearance of your WordPress single post templates based on category? By default, WordPress uses the same template to display all single posts, regardless of the category they belong to. However, with a few modifications, you can easily implement a solution that allows you to display different single templates based on the category. In this article, we will guide you through the process of setting up and using category-specific single templates in WordPress.

					function wpturbo_custom_single_template( $single_template ) {
    global $post;

    if ( has_category( 'category-slug' , $post ) ) {
        $single_template = locate_template( array( 'single-category-slug.php' ) );
    }

    return $single_template;
}
add_filter( 'single_template', 'wpturbo_custom_single_template' );
				

The code snippet provided allows you to display a different single template based on the category of a post in WordPress. This can be useful in scenarios where you want to have unique layouts or styles for posts in specific categories.

The first part of the code defines a function called wpturbo_custom_single_template() which takes $single_template as a parameter. This function will be responsible for checking the category of the post and returning the appropriate single template.

We start by declaring the $post global variable using the global keyword. This variable holds the current post object, which we’ll use to determine the category.

Next, we use the has_category() function to check if the post has a specific category. In this example, we’re checking for the category with the slug category-slug. You can replace category-slug with the actual slug of the category you want to target.

If the post has the specified category, we use the locate_template() function to locate the custom single template file. In this example, we’re looking for a template file named single-category-slug.php. Make sure to replace category-slug with the actual slug of the category you’re targeting and make sure to create the corresponding template file.

Finally, we return the $single_template, which will either be the original template or the custom template if the post belongs to the specified category.

To implement this functionality, we use the add_filter() function to hook our wpturbo_custom_single_template() function to the single_template filter. This filter allows us to modify the single template used for displaying individual posts. By adding our function as a filter to this hook, we can override the default template and use our custom template based on the post’s category.

By using this code snippet, you can easily specify different single templates for posts that belong to specific categories, giving you more control over the appearance and layout of your content.

Register an account to save your snippets or go Pro to get more features.