我发现它可以显示模板中使用的文件的当前名称:
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上发布票证。