Template baseado na categoria do post
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!