Ho trovato questo per visualizzare il nome corrente del file utilizzato nel modello:
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: ottenere il nome del modello di pagina su una pagina
Funziona abbastanza bene, tranne che nel backend, nella casella di selezione del modello, ottengo questa brutta voce extra:
Qualcuno ha idea di come risolverlo? Non so nemmeno perché questa funzione sia chiamata nel backend. Esiste una funzione condizionale come is_frontend()
: forse questo risolverebbe il problema?
template_include
gancio, suggerito da t31os, risolve il problema? O forse ti ho frainteso.
functions.php
come bug, concordo completamente con la tua premessa. A peggiorare le cose, ho scansionato il codice core di WordPress e ho trovato circa 5 posti in cui avrebbe potuto esserci un gancio per permetterti di gestire questo problema, ma non ne ho trovato nessuno. Suggerirei di pubblicare un biglietto su core.trac.wordpress.org .