J'ai trouvé ceci pour afficher le nom actuel du fichier utilisé dans le modèle:
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 ;
}
Source: obtenir le nom du modèle de page sur une page
Cela fonctionne assez bien, sauf que dans le backend, dans la boîte de sélection du modèle, je reçois cette entrée supplémentaire laide:
Quelqu'un a-t-il une idée de comment résoudre ce problème? Je ne sais même pas pourquoi cette fonction est appelée dans le backend. Existe-t-il une fonction conditionnelle du type is_frontend()
: peut-être que cela résoudrait le problème?
template_include
raccrochez pas , qui t31os suggéré, résoudre le problème? Ou peut-être je vous ai mal compris.
functions.php
bogue, je suis tout à fait d'accord avec votre idée. Pour aggraver les choses, j'ai scanné le code principal de WordPress et trouvé environ 5 endroits où il aurait pu y avoir un crochet pour vous permettre de gérer ce problème, mais je n'en ai trouvé aucun. Je suggère de poster un billet sur core.trac.wordpress.org .