As últimas versões do WordPress melhoraram muito a hierarquia de templates, possibilitando criar modelos usando slug de tags ou categorias (category-noticias.php), nome dos autores (author-marcelo.php), tipos de arquivos (image.php) e até criar templates para tipos de posts (single-evento.php archive-evento.php).
Uma coisa da qual sinto falta no WordPress é a possibilidade de criar um template para subcategorias. Dessa forma, podemos dividir o site em áreas com cores específicas ou com sidebars diferenciados, por exemplo.
Para resolver esse problema, existe uma função que recupera as subcategorias de uma dada categoria (get_term_children) e as retorna em um array. Com isso podemos usar a template tag is_category passando esse array como parâmetro.
Por fim, basta condicionar o carregamento dos templates no arquivo category.php:
if( is_category( 1 ) or is_category( get_term_children( 1, 'category' ) ) ) include( 'category-noticias.php' ); elseif( is_category( 2 ) or is_category( get_term_children( 2, 'category' ) ) ) include( 'category-eventos.php' ); else include( 'category-default.php' );
Assim, para a categoria 1 e suas respectivas filhas, será usado o template category-noticias.php, já para a categoria 2 e suas respectivas filhas será usado o template category-eventos.php e para as demais categorias, será usado o template category-default.php.
Para manter o código limpo, é recomendável que o template category.php tenha apenas as condições e os includes dos arquivos corretos. Se você pretende manter o código padrão do template da categoria nesse arquivo, lembre-se de deixá-lo dentro da condição else.
Download aqui.