Come fai a scoprire quale pagina modello serve la pagina corrente?
-
-
Ispeziono l'htmle trovo untagidentificato o qualcosa di unico.I inspect the html and find an identified tag or something unique.
- 1
- 2011-12-27
- Naoise Golden
-
Visualizzail codice sorgentee cerca le classi del corpo cheti dicono qualemodello viene utilizzato.Ti dà anche l'i.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
-
Possibile duplicato di [Ottieninome delfilemodello corrente] (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.Specialmente quandonon ci èpermessoinstallare unplugin o scrivere unafunzioneper raggiungere l'obiettivo.@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 risposta
- voti
-
- 2011-12-26
Collegati a
template_include
,imposta unglobaleper annotareilmodelloimpostato daltema,quindi rileggi quel valorenelpiè dipagina onell'intestazioneper vedere qualemodello viene chiamatoper una data vista.Hogiàparlato di questo hook difiltroin Ottieniilnome dell'attualemodello difile ,maprendi una copia di quel codice e riproducila con lefunzioni
functions.php
file.Quindi apri
header.php
ofooter.php
deltema (o dovepreferisci)e usa qualcosa di simileper stampareilmodello corrente.<div><strong>Current template:</strong> <?php get_current_template( true ); ?></div>
Se desideri utilizzarlo su un sito diproduzionee tenere questeinformazioni lontano daituoi utentinon amministratori,aggiungi unpo 'di logica condizionale.
<?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() ); ?>
Orapuoiteneretraccia di quali visualizzazioni stanno utilizzando qualemodello,mantenendo questeinformazioni lontane daituoi visitatori.
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.
-
Se c'è qualcosa di sbagliatoin questa risposta,o se qualcunopuòfornire commenti su cosapotrebbeesserefattopermigliorare questa risposta,fallo,lascia un commento quie condividii tuoipensierie idee su comemigliorarla.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
-
Non hafunzionatofratello,dice "Funzionenon definita"It didn't work bro, it says "Undefined function"
- 1
- 2016-04-27
- Lucas Bustamante
-
@ LucasB stesso qui,questo è l'errore che ho ricevuto@LucasB same here, that's the error I got
- 1
- 2017-01-07
- Lincoln Bergeson
-
Dovrebbeessere [`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`non è unafunzionee`get_page_template`non stampanullaperme (unapagina di 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
Bene,setutto ciò che vuoi è controllare qualefilemodello è stato utilizzatopergenerare lapagina corrente,non devi sporcarti lemani conil codice;)
C'è questopraticoplugin chiamato Debug Bar . È ungrande aiutoin molte situazioni,inclusa latua. Dovresti assolutamente verificarlo:perme emolti altri è un compagnoindispensabileper qualsiasi sviluppo di WP.
Ho allegato uno screenshot chepotrebbefartiinnamorare ...
Perfarein modo che labarra di debug funzioni ,devi abilitare le opzioni
wp_debug
ewp_savequeries
. Queste opzioni sono disattivateperimpostazionepredefinita.Tuttavia,prima di apportaremodifiche,ci sono alcunipunti datenere amente:
- Nonfarloin un ambiente diproduzione ameno cheil sito webnon soddisfimoltotraffico.
- Una voltaterminatoil debug,assicurati di disabilitare le opzioni (specialmente l'opzione wp_savequeriespoichéinfluisce sulleprestazioni) del sito web.
Per apportare lemodifiche:
- Apriilfile
wp_config.php
tramite un clientftp. - Cerca l'opzione
wp_debug
. Modificaloindefine( 'WP_DEBUG', true );
. Se la riganon èpresente,aggiungila alfile. - Allo stessomodo,modifica o aggiungi la riga
define( 'SAVEQUERIES', true );
alfile. - Salva. Seiprontopereseguireil debug.
Ulterioriinformazioni: 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 -ilplugin Debug Barnon * richiede * `WP_DEBUG`e` SAVEQUERIES`,sebbene sia *migliorato * da loro.@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'esecuzione di untaleplugin,soloper unpo 'diinformazione crea un sacco di overheadimho,e quindi èper questo chenon l'ho suggeritonellamia risposta.Detto questo,chiaramente lepersonepreferiscono questa risposta,ma sono curioso di sapereperché.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
Uso questapraticafunzione chemostrailmodello corrente soloperi super amministratori:
function show_template() { if( is_super_admin() ){ global $template; print_r($template); } } add_action('wp_footer', 'show_template');
Spero che questo aiuti.:)
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. :)
-
Questa è la rispostagoto,dovrebbeessere accettata.This is the goto answer, should be accepted.
- 3
- 2018-03-13
- Hybrid Web Dev
-
Uso anche questo,mamanca ancora la visualizzazione di quale "include" viene utilizzatoe mostra solo lapagina di livello superiore.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
Aggiungiil seguente codice subito dopo la rigaget_headerin ognifilemodellopertinente:
& lt;! - & lt;?phpechobasename (__FILE__);? >- > Neltuobrowser> visualizza la sorgentee ilnome delmodello verrà visualizzato come commentoneltuo codice html,ades.
& lt;! -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 -->
-
ètroppofaticoso aggiungerlo ovunqueit's too much effort to add this everywhere
- 0
- 2019-02-18
- Adal
-
hahaha,perchépreoccuparsi di questo se haiintenzione dietichettare ognifilee quindietichettarlo semplicemente conil suonomefileeffettivo!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 è statotantotempofa.Ci sono soluzionimigliori.Ma avevo un semplice scriptperinserireil codice all'inizio dituttii filein una cartella,quindinon è richiesta alcuna codifica deinomieffettivi.Fattoin 1 o 2 secondi.@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
-
giusto,:)fair enough, :)
- 0
- 2020-05-21
- Aurovrata
-
- 2017-09-15
Ecco qui:
Unelenco HTML con tutti i filemodelloin usoper lapagina di destinazione corrente, compresetutte leparti delmodello daplug-in,temi secondarie/o combinazioni ditemi principali ,tuttoin una riga di codice:
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>';
Potresti dover controllare cheiltuo server non restituiscabarre di dubblein alcunpercorso . Ricorda diinserirlo dopo chetuttii filemodello sono statieffettivamente utilizzati,comein footer.php,ma prima che labarra di amministrazione venga visualizzata .
seilpercorso
admin-bar stuff
viene visualizzatoin alto oin qualsiasi altrofile,cambiailnome delfiletemplate-loader.php
in questa riga di codicein: qualunquenomefile da cui deviinterrompere. Spesso:class-wp-admin-bar.php
sene haibisognonellabarra di amministrazione, usa lapriorità corretta (laprima) per assicurarti chenessunfile siainserito allafine di questoelenco. Adesempio:
add_action('admin_bar_menu', 'my_adminbar_template_monitor', -5);
priorità
-5
fain modo che venga caricatoperprimo. La chiave è chiamareget_included_files()
almomentogiusto,altrimenti ènecessario unpo 'di array-popping!Per rompere questo:
Nonpuoi raccoglieretuttii filemodelloinclusi senzailbacktrace PHP. Superglobals all'interno di
template_include
non li raccoglieràtutti . L'altromodo è "posizionare unindicatore"in ognifilemodello,ma se deviprimainteragire coni file,devipreoccuparti deltempoe dell'interaidea.1) Dobbiamo controllaretuttii file che sono stati utilizzati dalla richiesta corrente di Wordpress. E sonotanti! Non sorprenderti se stai usando 300fileprima ancora cheiltuofunctions.php sia registrato.
$included_files = str_replace('\\', '/', get_included_files());
Stiamo usandoilnativo PHPget_included_files (),convertendo lebarre rovesciatein barrein avantiper abbinare lamaggiorparte deipercorsi di ritorno di Wordpress.
2) Stiamotagliando quell'array da cui è registratoiltemplate-loader.php. Dopodiché,ilfileget_included_files ()popolato dovrebbe contenere soloi filemodello.
/* 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) Abbreviai risultati,non abbiamobisogno delpercorsofino a quando la cartella deltema o la cartella delplugin, comemodelli in uso,possonoesseremescolati daplugin,temi o cartelle ditemi secondari.
$replacement = $path.'wp-content/'; $output = str_replace($replacement, '', $output);
4) Infine,converti da array a unabella lista HTML
$output = '<ul><li>'.implode('</li><li>', $output).'</li></ul>';
Potrebbeesserenecessaria un'ultimamodifica nellaparte 3) -sostituzione ,se non desideri include richieste daplugin. Potrebbero chiamare
class-files
in ritardoe "intercettare" durante l'elaborazione dell'output delmodello.Tuttavia,hotrovato ragionevole lasciarli visibili,poiché l'idea è diteneretraccia di ciò che è stato caricato ,anche senon è un "modello" che visualizza l'outputin questafase.
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
Ilmodopiù semplice che hotrovato èincludere lafunzione WordPressneltagbody.Aggiungerà diverse classi a seconda dellapagina che stai visualizzando (homeper laprimapagina,paginaperpagina,ecc.).
Dai un'occhiata qui: http://codex.wordpress.org/Function_Reference/body_class
Inoltre è utileperindirizzareglielementi con CSS su quellepagine.
Imparare a conoscere lagerarchia deimodelli (http://codex.wordpress.org/Template_Hierarchy) comemenzionato da David R è anche unabuonaidea.
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
C'è un altroplug-inpiùessenziale appositamenteper questo scopo.Sonopropenso all'installazione dellabarra di debug,perché quelle altrefunzionalità sembrano utili,ma questa èpiù semplicee specificaper questo scopo: 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
Una cosamolto semplice chefaccio èinserire un commento HTML cheidentifichiilfile delmodelloin ognifile rilevante deltema,adesempio all'inizio diindex.php che ho
<!-- index -->
e all'inizio difront-page.php
<!-- front -->
Ma ovviamente ciò richiede lamodifica deltema.Sospetto chepotresti aggiungere unafunzionepersonalizzatanelfilefooter.php o header.php cheti direbbe qualefile è stato utilizzato.Ilmetodo soprae latabella di riferimento http://codex.wordpress.org/Template_Hierarchy sono ciò a cuitendoutilizzare.
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
Esiste unplugin chiamato Theme Check chefaesattamente questo.Visualizzailnome delfilemodello correntein uso come commento 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.
Quando attivi untema wordpress,è sempre una seccatura scoprire qualefile andareper cambiare le cose. Qualcheidea su come semplificare le cose?
Ma d'altraparte,considerando lafunzionalitàget_template_part,questopotrebbeessereimpossibile.Chene dici?