Voici:
Une liste HTML contenant tous les fichiers de modèle utilisés pour la page d'arrivée actuelle, y compris toutes les parties de modèle de plug-ins, de thème enfant et / ou de combinaison de thème parent , le tout dans une seule ligne de code:
echo '<ul><li>'.implode('</li><li>', str_replace(str_replace('\\', '/', ABSPATH).'wp-content/', '', array_slice(str_replace('\\', '/', get_included_files()), (array_search(str_replace('\\', '/', ABSPATH).'wp-includes/template-loader.php', str_replace('\\', '/', get_included_files())) + 1)))).'</li></ul>';
Vous POUVEZ peut-être avoir besoin de vérifier que votre serveur ne renvoie aucune barre oblique double . N'oubliez pas de placer ceci après que tous les fichiers de modèle aient été utilisés, comme dans footer.php, mais avant que la barre d'administration ne soit restituée .
Si admin-bar stuff
path est affiché en haut, ou dans tout autre fichier, remplacez le nom template-loader.php
de fichier dans cette ligne de code par: quel que soit le nom de fichier que vous souhaitez interrompre. Souvent:class-wp-admin-bar.php
si vous en avez besoin dans la barre d’administration, utilisez la bonne priotité (la plus ancienne) pour vous assurer qu’aucun fichier n’est entré à la fin de cette liste. Par exemple:
add_action('admin_bar_menu', 'my_adminbar_template_monitor', -5);
La priorité est de -5
faire en sorte qu'elle soit chargée en premier. La clé est d'appeler get_included_files()
au bon moment, sinon un peu de tableau-popping est nécessaire!
Pour rompre cela:
Vous ne pouvez pas collecter tous les fichiers de modèle inclus sans trace PHP. Les superglobales à l' intérieur template_include
ne les collecteront pas tous . L'autre façon consiste à "placer un marqueur" dans chaque fichier de modèle, mais si vous devez d'abord interagir avec les fichiers, vous aurez du temps et de l'idée.
1) Nous devons vérifier à l'intérieur de tous les fichiers qui ont été utilisés par la demande actuelle de Wordpress. Et ils sont nombreux! Ne soyez pas surpris si vous utilisez 300 fichiers avant même que votre functions.php soit enregistré.
$included_files = str_replace('\\', '/', get_included_files());
Nous utilisons la méthode native get_included_files () de PHP, qui convertit les barres obliques inverses en barres obliques pour correspondre à la plupart des chemins de retour Wordpress.
2) Nous coupons ce tableau à partir duquel le template-loader.php est enregistré. Après cela, get_included_files () ne devrait avoir que des fichiers de modèle remplis.
/* The magic point, we need to find its position in the array */
$path = str_replace('\\', '/', ABSPATH);
$key = $path.'wp-includes/template-loader.php';
$offset = array_search($key, $included_files);
/* Get rid of the magic point itself in the new created array */
$offset = ($offset + 1);
$output = array_slice($included_files, $offset);
3) Raccourcissez les résultats. Nous n’avons pas besoin du chemin jusqu’à ce que le dossier de thème ou le dossier de plug-in, en tant que modèles utilisés, puisse être mélangé à partir de dossiers de plug-ins, de thèmes ou de thèmes enfants.
$replacement = $path.'wp-content/';
$output = str_replace($replacement, '', $output);
4) Enfin, convertissez un tableau en une belle liste HTML
$output = '<ul><li>'.implode('</li><li>', $output).'</li></ul>';
Une dernière modification peut être nécessaire dans part3) -replacement , si vous ne voulez pas d' inclusions obligatoires par plugins. Ils peuvent appeler en class-files
retard et "intercepter" pendant le traitement de sortie du modèle.
Cependant, j’ai trouvé raisonnable de les laisser visibles, car l’idée est de suivre ce qui a été chargé , même si ce n’est pas un "modèle" qui restitue la sortie à cette étape.