# Different Single Post Template per Category

> Lets a classic theme use single-cat-{slug}.php for posts in a given category, for example a recipe layout for posts filed under Recipes, falling back to the normal template.

- Type: PHP
- Runs: Run everywhere
- Category: [Developer](https://wpide.com/library/category/developer/)
- Tags: templates, categories, themes
- Author: WPIDE Team
- Installs: 0
- Updated: 2026-10-28
- Page: https://wpide.com/library/template-single-by-category/

## Code

```php
add_filter( 'single_template', function ( $template ) {
    $post = get_queried_object();
    if ( ! $post instanceof WP_Post || 'post' !== $post->post_type ) {
        return $template;
    }

    $candidates = array();
    foreach ( (array) get_the_category( $post->ID ) as $category ) {
        $candidates[] = 'single-cat-' . $category->slug . '.php';
    }

    $found = $candidates ? locate_template( $candidates ) : '';

    return $found ? $found : $template;
} );
```

## Notes

Create the file in your child theme, such as single-cat-recipes.php; block themes can use the template picker in the editor instead.

## How to use it

Install the free WPIDE plugin (https://wordpress.org/plugins/wpide/), find "Different Single Post Template per Category" in its snippet library and add it in one click; or create a new PHP snippet in WPIDE (or any code snippets plugin) and paste the code above. More snippets: https://wpide.com/library/
