Eu encontrei isso para exibir o nome atual do arquivo usado no modelo:
function get_template_name () {
foreach ( debug_backtrace() as $called_file ) {
foreach ( $called_file as $index ) {
if ( !is_array($index[0]) AND strstr($index[0],'/themes/') AND !strstr($index[0],'footer.php') ) {
$template_file = $index[0] ;
}
}
}
$template_contents = file_get_contents($template_file) ;
preg_match_all("Template Name:(.*)\n)siU",$template_contents,$template_name);
$template_name = trim($template_name[1][0]);
if ( !$template_name ) { $template_name = '(default)' ; }
$template_file = array_pop(explode('/themes/', basename($template_file)));
return $template_file . ' > '. $template_name ;
}
Fonte: obter o nome do modelo da página em uma página
Funciona muito bem, exceto que no back-end, na caixa de seleção de modelo, recebo esta entrada extra feia:
Alguém tem alguma idéia de como consertar isso? Nem sei por que essa função é chamada no back-end. Existe uma função condicional como is_frontend()
- talvez isso resolva o problema?
template_include
hook, que t31os sugeriu, resolve o problema? Ou talvez eu tenha entendido mal você.
functions.php
bug, eu concordo completamente com sua premissa. Para piorar as coisas, examinei o código principal do WordPress e encontrei cerca de 5 lugares onde poderia haver um gancho para permitir que você lidasse com esse problema, mas não encontrei nenhum. Sugiro que você publique um ticket no core.trac.wordpress.org .