1- Faça uma cópia do seu arquivo single.php e nomeie este arquivo para ‘single-slug-da-categoria.php’ onde você deve substituir ‘slug-da-categoria’ pelo slug correspondente.

Ex: caso a categoria seja ‘vídeos’, use: single-videos.php | caso seja ‘curso de forró’, use single-curso-de-forro.php

2- Altere o layout deste arquivo conforme desejar que seja exibido os posts desta categoria.

3- Agora no seu arquivo functions.php insira o seguinte código:

add_filter('single_template', create_function(
 '$the_template',
 'foreach( (array) get_the_category() as $cat ) {
      if ( file_exists(TEMPLATEPATH . "/single-{$cat->slug}.php") )
      return TEMPLATEPATH . "/single-{$cat->slug}.php"; }
      return $the_template;' )
 );

4- Faça o teste e verifique se tudo funcionou conforme desejado.

[EXPLICAÇÃO]

No código acima, criamos um filtro no WP que é acionado antes de exibir o post. A função percorre todas as categorias existentes no seu WP e compara se existe um arquivo com o mesmo nome (single-nome.php). Caso exista, ele retorna este arquivo como template para exibir aquele post.

A função usada no arquivo ‘functions.php’ está disponível na documentação oficial em https://codex.wordpress.org/Plugin_API/Filter_Reference/single_template

Compartilhe!