Comment savoir quelle page de modèle sert la page actuelle?
-
-
J'inspecte le htmlet trouve unebaliseidentifiée ou quelque chose d'unique.I inspect the html and find an identified tag or something unique.
- 1
- 2011-12-27
- Naoise Golden
-
Affichez le code sourceet recherchez les classes de corps qui vousindiquent quelmodèleest utilisé.Vous donne également lei.d.View the source code and look for the body classes which tell you which template is used. Also gives you the i.d.
- 1
- 2014-02-04
- Brad Dalton
-
Copiepossible de [Obtenir lenom dufichiermodèle actuel] (https://wordpress.stackexchange.com/questions/10537/get-name-of-the-current-template-file)Possible duplicate of [Get name of the current template file](https://wordpress.stackexchange.com/questions/10537/get-name-of-the-current-template-file)
- 0
- 2017-06-13
- Burgi
-
@BradDalton +1.Surtout lorsquenousne sommespas autorisés àinstaller unplugin ou à écrire unefonctionpour atteindre l'objectif.@BradDalton +1. Specially when we are not allowed to install a plugin or write a function to achieve the goal.
- 0
- 2018-07-13
- Subrata Sarkar
-
9 réponses
- votes
-
- 2011-12-26
Accrochez-vous à
template_include
,définissez unglobalpournoter lemodèle définipar lethème,puis relisez cette valeur dans lepied depage ou l'en-têtepour voir quelmodèleest appelépour une vue donnée.J'ai déjàparlé de ce hook defiltre dans Obtenir lenom de l'actuelfichier demodèle ,mais allez chercher une copie de ce code et placez-y les
functions.php
.Ensuite,ouvrez le
header.php
oufooter.php
duthème (oupartout où vous le souhaitez)et utilisez quelque chose comme ce qui suitpourimprimer lemodèle actuel.<div><strong>Current template:</strong> <?php get_current_template( true ); ?></div>
Si vous vouliez utiliser ceci sur un site deproductionet garder cesinformations à l'écart de vos utilisateursnon administrateurs,ajoutez unpeu de logique conditionnelle.
<?php // If the current user can manage options(ie. an admin) if( current_user_can( 'manage_options' ) ) // Print the saved global printf( '<div><strong>Current template:</strong> %s</div>', get_current_template() ); ?>
Vouspouvez désormais suivre les vues qui utilisent quelmodèle,touten gardant cesinformations à l'écart de vos visiteurs.
Hook onto
template_include
, set a global to note the template set by the theme then read that value back into the footer or header to see which template is being called for a given view.I spoke about this filter hook before in Get name of the current template file, but go grab a copy of that code and plonk it your theme's
functions.php
file.Then open up the theme's
header.php
orfooter.php
(or wherever you like) and use something like the following to print out the current template.<div><strong>Current template:</strong> <?php get_current_template( true ); ?></div>
If you wanted to use this on a production site and keep that info away from your non-administrator users, add a little conditional logic.
<?php // If the current user can manage options(ie. an admin) if( current_user_can( 'manage_options' ) ) // Print the saved global printf( '<div><strong>Current template:</strong> %s</div>', get_current_template() ); ?>
Now you can keep track of what views are using what template, whilst keeping that info away from your visitors.
-
S'il y a quelque chose quine vapas avec cette réponse,ou si quelqu'unpourraitfournir des commentaires sur ce quipourrait êtrefaitpour améliorer cette réponse,faites-le,déposez un commentaireiciet partagez vospenséeset idées sur lafaçon de l'améliorer.If there is something wrong with this answer, or if anyone could provide comments on what could be done to improve this answer, have at it, drop a comment here and share your thoughts and ideas on how to make it better.
- 1
- 2014-01-28
- t31os
-
Çan'apasfonctionnémonfrère,ça dit "Fonctionnon définie"It didn't work bro, it says "Undefined function"
- 1
- 2016-04-27
- Lucas Bustamante
-
@LucasBmêmeici,c'est l'erreur quej'ai@LucasB same here, that's the error I got
- 1
- 2017-01-07
- Lincoln Bergeson
-
Cela devrait être [`get_page_template`] (https://codex.wordpress.org/Function_Reference/get_page_template)This should be [`get_page_template`](https://codex.wordpress.org/Function_Reference/get_page_template)
- 2
- 2017-08-11
- Blazemonger
-
`get_current_template`n'estpas unefonctionet`get_page_template`n'imprime rienpourmoi (unepage woocommerce).`get_current_template` is not a function and `get_page_template` prints nothing for me (a woocommerce page).
- 0
- 2020-06-27
- run_the_race
-
- 2011-12-26
Ehbien,sitout ce que vous voulezest de vérifier quelfichiermodèle a été utilisépourgénérer lapage actuelle,vousn'avezpasbesoin de vous salir lamain avec du code;)
Ilexiste cepluginpratique appelé Barre de débogage . C'est une aideprécieuse dans denombreuses situations,y compris la vôtre. Vous devriez certainement le vérifier -pourmoiet pourbeaucoup d'autres,c'est un compagnonincontournablepourtout développement WP.
J'aijoint une capture d'écran quipourrait vousfairetomber amoureux ...
Pour que labarre de débogage fonctionne ,vous devez activer les options
wp_debug
etwp_savequeries
. Ces options sont désactivéespar défaut.Avant d'apporter desmodifications,il y a cependant quelquespoints àgarder à l'esprit:
- Ne lefaitespas dans unenvironnement deproduction,àmoins que le site Webne génèrebeaucoup detrafic.
- Unefois le débogageterminé,assurez-vous de désactiver les options (notamment l'option wp_savequeries carelle affecte lesperformances) du site Web.
Poureffectuer lesmodifications:
- Ouvrez lefichier
wp_config.php
via un clientftp. - Recherchez l'option
wp_debug
. Modifiez-leendefine( 'WP_DEBUG', true );
. Si la lignen'estpasprésente,ajoutez-la aufichier. - Demême,modifiez ou ajoutez la ligne
define( 'SAVEQUERIES', true );
aufichier. - Enregistrez. Vous êtesprêt à déboguer.
Plus d'informations: Codex
Well, if all you want is to check which template file has been used to generate the current page then you don't need to get your hands dirty with code ;)
There's this handy plugin called Debug Bar. It's a great helper in many situations including yours. You should definitely check it out - for me and many others it's a must-have companion for any WP development.
I've attached a screenshot that could make you fall in love...
To get the Debug Bar working, you need to enable
wp_debug
andwp_savequeries
options. These options are in disabled state by default.Before you make any changes though, there are a few points to keep in mind:
- Do not do it in production environment unless the website doesn't cater to a lot of traffic.
- Once you finish debugging, ensure to disable the options (especially the wp_savequeries option since it affects the performance) of the website.
To make the changes:
- Open
wp_config.php
file through a ftp client. - Search for
wp_debug
option. Edit it todefine( 'WP_DEBUG', true );
. If the line is not present, add it to the file. - Similarly, edit or add the line
define( 'SAVEQUERIES', true );
to the file. - Save. You are ready to debug.
More info: Codex
-
@justCallMeBiru - leplugin Debug Barne *nécessitepas * `WP_DEBUG`et` SAVEQUERIES`,bien qu'il soit * amélioré *pareux.@justCallMeBiru -- the Debug Bar plugin doesn't *require* `WP_DEBUG` and `SAVEQUERIES`, though it is *enhanced* by them.
- 2
- 2014-01-15
- Pat J
-
L'exécution d'untelplugin,justepour unetidbit d'information créebeaucoup defraisgénéraux àmon humble avis,et c'estpourquoije ne l'aipas suggéré dansmapropre réponse.Cela dit,clairement lesgenspréfèrent cette réponse,je suis curieux de savoirpourquoi.Running such a plugin, just for one tid bit of information creates alot of overhead imho, and thus it is why i did not suggest it in my own answer. That said, clearly people prefer this answer, i'm curious to know why though.
- 3
- 2014-01-28
- t31os
-
- 2014-01-23
J'utilise cettefonctionpratique qui affiche lemodèle actuel uniquementpour les super-administrateurs:
function show_template() { if( is_super_admin() ){ global $template; print_r($template); } } add_action('wp_footer', 'show_template');
J'espère que cela aide.:)
I use this handy function that displays the current template only for super admins:
function show_template() { if( is_super_admin() ){ global $template; print_r($template); } } add_action('wp_footer', 'show_template');
Hope that helps. :)
-
Ceciest la réponse aller,devrait être acceptée.This is the goto answer, should be accepted.
- 3
- 2018-03-13
- Hybrid Web Dev
-
Je l'utilise aussimaisilmanquetoujours l'affichage de «include» quiest utiliséet n'affiche que lapage deniveau supérieur.I use this also but it still lacks the display of which “include” is being used and only shows the top level page.
- 0
- 2020-07-08
- Burndog
-
- 2011-12-27
Ajoutez le code suivantjuste après la ligneget_header dans chaquefichier demodèlepertinent:
<!-- <?php echo basename( __FILE__ ); ?> -->
Dans votrenavigateur> afficher la source,et lenom dumodèle sera affiché sousforme de commentaire dans votre code html,parexemple
<!-- page.php -->
Add the following code right after the get_header line in each relevant template file:
<!-- <?php echo basename( __FILE__ ); ?> -->
In your browser > view source, and the template name will be displayed as a comment in your html code, e.g.
<!-- page.php -->
-
c'esttrop d'effort d'ajouter çapartoutit's too much effort to add this everywhere
- 0
- 2019-02-18
- Adal
-
hahaha,pourquoi s'embêter avec ça si vous allez étiqueter chaquefichier,puis étiqueter simplement avec sonnom defichier réel!hahaha, why bother with this if you're going to label each file then simply label it with its actual file name!
- 0
- 2020-05-09
- Aurovrata
-
@Aurovrata c'étaitil y a longtemps.Ilexiste debien meilleures solutions.Maisj'avais un script simplepourinsérer le codeen haut detous lesfichiers dans un dossier,donc aucun codageen dur desnoms réels requis.Faiten 1 ou 2 secondes.@Aurovrata it was a long time ago. There are way better solutions. But I had a simple script to insert the code at the top of all files in a folder, so no hardcoding of actual names required. Done in 1 or 2 seconds.
- 0
- 2020-05-20
- ronald
-
C'est suffisant,:)fair enough, :)
- 0
- 2020-05-21
- Aurovrata
-
- 2017-09-15
Et voilà:
Une liste HTML avec tous lesfichiers demodèle utiliséspour lapage de destination actuelle, y compristoutes lesparties demodèle desplug-ins,desthèmesenfantset/ou des combinaisons dethèmesparents ,letout 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>';
Vouspouvez avoirbesoin de vérifier que votre serveur ne renvoie aucune doublebarre oblique à aucun chemin . N'oubliezpas de leplacer après quetous lesfichiersmodèles ont été utilisés,comme dansfooter.php,mais avant le rendu de labarre d'administration .
si le chemin de
admin-bar stuff
apparaîten haut,outout autrefichier,changez lenom defichiertemplate-loader.php
dans cette ligne de codeen:peuimportenom defichier dont vous devez rompre. Souvent:class-wp-admin-bar.php
si vousen avezbesoin dans labarre d'administration, utilisez labonnepriorité (auplustôt) pour éviter que desfichiersne soient saisis à lafin de cette liste. Parexemple:
add_action('admin_bar_menu', 'my_adminbar_template_monitor', -5);
priorité
-5
permet de s'assurer qu'il se chargeen premier. La cléest d'appelerget_included_files()
aubonmoment,sinon quelquestableaux sontnécessaires!Pour diviser ceci:
Vous ne pouvezpas collectertous lesfichiersmodèlesinclus sansbacktrace PHP. Les superglobales dans
template_include
ne les collecterontpastoutes . L'autrefaçonest de "placer unmarqueur" dans chaquefichier demodèle,mais si vous devez d'abordinteragir avec lesfichiers,vous avez dutempset l'idée dans sonensemble.1) Nous devons vérifier à l'intérieur detous lesfichiers qui ont été utiliséspar la requête Wordpress actuelle. Etils sontnombreux! Ne soyezpas surpris si vous utilisez 300fichiers avantmême que votrefunctions.phpne soitenregistré.
$included_files = str_replace('\\', '/', get_included_files());
Nous utilisons lenatif PHPget_included_files (),convertissant les contre-obliquesen barres obliquespour correspondre à laplupart des chemins de retour de Wordpress.
2) Nous coupons cetableau àpartir duquel letemplate-loader.phpestenregistré. Après cela,lafonctionget_included_files () rempliene devrait contenir que desfichiersmodèles.
/* 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,nousn'avonspasbesoin du cheminjusqu'à ce que le dossier dethème ou le dossier deplug-in,en tant quemodèles en cours d'utilisation,puisse êtremélangé àpartir deplugins,dethèmes ou de dossiers dethèmesenfants.
$replacement = $path.'wp-content/'; $output = str_replace($replacement, '', $output);
4) Enfin,convertissez untableauen unebelle liste HTML
$output = '<ul><li>'.implode('</li><li>', $output).'</li></ul>';
Une dernièremodificationpeut êtrenécessaire dans lapartie3) -replacement ,si vous ne voulezpas lesinclusions obligatoires parplugins. Ilspeuvent appeler les
class-files
tardivementet "intercepter"pendant letraitement de sortie dumodèle.Cependant,j'aitrouvé raisonnable de les laisser visibles,car l'idéeest de suivre ce qui a été chargé ,même si cen'estpas un "modèle" quiproduit le rendu à cette étape.
Here you go:
A HTML-list with all template files in use for the current landing page, including all template-parts from plugins, child theme and/ or parent theme combinations, all in one line of 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>';
You MAY need to check that your server does not returning dubble slashes at any path. Remember to place this after all template files actually been used, like in footer.php, but before admin bar renders.
if
admin-bar stuff
path is showing at the top, or any other file, change the filenametemplate-loader.php
in this line of code to: whatever filname you need to break from. Often:class-wp-admin-bar.php
if you need this in the admin bar, use the right priotity (earliest) to make shure no files are entered at the end of this list. For example:
add_action('admin_bar_menu', 'my_adminbar_template_monitor', -5);
priority
-5
make shure it loads first. The key is to callget_included_files()
at the right moment, otherwise some array-popping needed!To break this up:
You can not collect all included template files without PHP backtrace. Superglobals inside
template_include
wont collect them all. The other way is to "place a marker" in each template file, but if you need to interact with the files first, you hazzle with time and the whole idea.1) We need to check inside all the files that have been used by current Wordpress request. And they are many! Dont be surprised if you are using 300 files before even your functions.php is registered.
$included_files = str_replace('\\', '/', get_included_files());
We are using the PHP native get_included_files(), converting backslashes to forward slashes to match most of Wordpress returning paths.
2) We are cutting that array from where the template-loader.php is registered. After that, the populated get_included_files() should only have template files populated.
/* 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) Shorten down the results, we dont need the path until theme folder or plugin folder, as templates in use, can be mixed from plugins, theme or child theme folders.
$replacement = $path.'wp-content/'; $output = str_replace($replacement, '', $output);
4) Finally, convert from array to a nice HTML list
$output = '<ul><li>'.implode('</li><li>', $output).'</li></ul>';
A last modification might be needed in part3) -replacement, if you dont want required includes by plugins. They might call
class-files
late, and "intercept" during the template output processing.However, I found it reasonable to leave them visible, as the idea is to track whats been loaded, even if it is not a "template" that rendering output in this stage.
-
- 2011-12-25
Lemoyen leplus simple quej'aitrouvéest d'inclure lafonction WordPress sur labalisebody.Cela ajouteraplusieurs classesen fonction de lapage que vous consultez (accueilpour lapremièrepage,pagepourpage,etc.).
Découvrez-leici: http://codex.wordpress.org/Function_Reference/body_class
Deplus,ilest utilepour cibler des éléments avec CSS sur cespages.
Apprendre à connaître la hiérarchie desmodèles (http://codex.wordpress.org/Template_Hierarchy) comme l'amentionné David Rest également unebonneidée.
Easiest way I've found is to include the WordPress function on the body tag. It'll add several classes depending on which page you're viewing (home for the front, page for page, etc).
Check it out here: http://codex.wordpress.org/Function_Reference/body_class
Plus it's helpful for targeting elements with CSS on those pages.
Getting to know the Template Hierarchy (http://codex.wordpress.org/Template_Hierarchy) as David R mentioned is also a good idea.
-
- 2013-01-29
Ilexiste un autrepluginplus simple spécialement à ceteffet.Jeme penche vers l'installation de labarre de débogage,car ces autresfonctionnalités semblent utiles,mais celle-ciestplusbasiqueet spécifiquement à ceteffet: http://wordpress.org/extend/plugins/what-the-file/
There's another more bare-bones plugin specifically for this purpose. I'm leaning towards installing the debug bar, because those other features look useful, but this one is more basic and specifically for this purpose: http://wordpress.org/extend/plugins/what-the-file/
-
- 2011-12-24
Une chosetrès simple queje faisest d'insérer un commentaire HTMLidentifiant lefichier demodèle dans chaquefichierpertinent duthème,parexempleen haut deindex.php quej'ai
<!-- index -->
et en haut de lapremièrepage.php
<!-- front -->
Mais évidemment celanécessite demodifier lethème.Je soupçonne que vouspourriez ajouter unefonctionpersonnalisée dans lefichierfooter.php ou header.php qui vousindiquerait quelfichier était utilisé.Laméthode ci-dessuset letableau de référence http://codex.wordpress.org/Template_Hierarchy sont ce à quoij'aitendanceutiliser.
One very simple thing I do is to insert an HTML comment identifying the template file in each relevant file of the theme, eg at the top of index.php I have
<!-- index -->
and at the top of front-page.php
<!-- front -->
But obviously that requires modifying the theme. I suspect you could add a custom function in the footer.php file or header.php which would tell you what file was being used. The above method and the reference chart http://codex.wordpress.org/Template_Hierarchy are what I tend to use.
-
- 2011-12-26
Ilexiste unpluginnommé Theme Check quifaitexactement cela.Il affiche lenom dufichier demodèle actuellement utilisé sousforme de commentaire HTML.
There is a plugin named Theme Check which does exactly this. It displays the name of the current template file in use as a HTML comment.
Lorsque vous activez unthème wordpress,ilesttoujours difficile de savoir dans quelfichier allerpour changer les choses. Uneidée comment simplifier les choses?
Mais d'un autre côté,comptetenu de lafonctionnalitéget_template_part,celapeut êtreimpossible.Que dites-vous?