Znalazłem to, aby wyświetlić bieżącą nazwę pliku używanego w szablonie:
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 ;
}
Źródło: pobierz nazwę szablonu strony na stronie
Działa całkiem dobrze, z wyjątkiem tego, że w backend, w polu wyboru szablonu, otrzymuję ten brzydki dodatkowy wpis:
Czy ktoś ma pomysł, jak to naprawić? Nie wiem nawet, dlaczego ta funkcja jest wywoływana w wewnętrznej bazie danych. Czy istnieje funkcja warunkowa typu is_frontend()
- może to rozwiązałoby problem?
template_include
zaczepia się, które sugeruje t31os, rozwiązać problem? A może źle cię zrozumiałem.
functions.php
jako błędu, całkowicie zgodzę się z twoją przesłanką. Co gorsza, zeskanowałem kod podstawowy WordPressa i znalazłem około 5 miejsc, w których mógł istnieć hak umożliwiający rozwiązanie tego problemu, ale nie znalazłem żadnego. Proponuję opublikować bilet na core.trac.wordpress.org .