Я нашел это, чтобы отобразить текущее имя файла, используемого в шаблоне:
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 ;
}
Источник: получить название шаблона страницы на странице
Это работает довольно хорошо, за исключением того, что в бэкэнде, в поле выбора шаблона, я получаю эту некрасивую дополнительную запись:
У кого-нибудь есть идеи, как это исправить? Я даже не знаю, почему эта функция вызывается в бэкэнде. Есть ли условная функция, как is_frontend()
- может быть, это решит проблему?
template_include
перехват, который предложил t31os, решить проблему? Или, может быть, я вас неправильно понял.
functions.php
ошибкой, я полностью согласен с вашей предпосылкой. Чтобы усугубить ситуацию, я отсканировал основной код WordPress и нашел около 5 мест, где мог бы быть хук, позволяющий решить эту проблему, но я не нашел ни одного. Я бы предложил разместить тикет на core.trac.wordpress.org .