Na hierarquia do WordPress, a página single.php é única para todos os posts do tipo “post”, não importa qual seja a categoria, sempre que o usuário for ler um post ele vai chamar a single.php.
É normal ter a necessidade de que para cada categoria ter uma single diferente. Existem muitas formas de fazer isso, inclusive é fácil encontrar exemplos na internet que enchem a single.php com “if, else”. Esse código abaixo é muito limpo, deve ser inserido no functions.php e funciona bem com até 2 níveis de categorias, pai > filho.
Adicione o código abaixo no functions.php e basta nomear as páginas com “single-category-nomedacategoria”.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
add_filter('single_template', 'check_for_category_single_template'); function check_for_category_single_template( $t ) { foreach( (array) get_the_category() as $cat ) { if ( file_exists(TEMPLATEPATH . "/single-category-{$cat->slug}.php") ) return TEMPLATEPATH . "/single-category-{$cat->slug}.php"; if($cat->parent) { $cat = get_the_category_by_ID( $cat->parent ); if ( file_exists(TEMPLATEPATH . "/single-category-{$cat->slug}.php") ) return TEMPLATEPATH . "/single-category-{$cat->slug}.php"; } } return $t; } |