テンプレートで使用されているファイルの現在の名前を表示するためにこれを見つけました:
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にチケットを投稿することをお勧めします。