Ecco qui:
Un elenco HTML con tutti i file modello in uso per la pagina di destinazione corrente, incluse tutte le parti modello da plugin, temi figlio e / o combinazioni di temi padre , il tutto in 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>';
È possibile che sia necessario verificare che il server non restituisca barre rovinate in nessun percorso . Ricorda di posizionarlo dopo che tutti i file modello sono stati effettivamente utilizzati, come in footer.php, ma prima del rendering della barra di amministrazione .
se il admin-bar stuff
percorso viene visualizzato nella parte superiore o qualsiasi altro file, modifica il nome file template-loader.php
in questa riga di codice in: qualunque sia il nome file da cui devi interrompere. Spesso:class-wp-admin-bar.php
se ne hai bisogno nella barra di amministrazione, usa la priorità giusta (prima) per assicurarti che nessun file sia inserito alla fine di questo elenco. Per esempio:
add_action('admin_bar_menu', 'my_adminbar_template_monitor', -5);
la priorità -5
fa shure che carica prima. La chiave è chiamare get_included_files()
al momento giusto, altrimenti è necessario un po 'di array-popping!
Per rompere questo:
Non è possibile raccogliere tutti i file modello inclusi senza backtrace PHP. I super-globali all'interno template_include
non li collezioneranno tutti . L'altro modo è quello di "posizionare un marcatore" in ciascun file modello, ma se devi prima interagire con i file, avanzi con il tempo e l'intera idea.
1) Dobbiamo controllare all'interno di tutti i file che sono stati utilizzati dall'attuale richiesta di Wordpress. E sono molti! Non sorprenderti se stai usando 300 file anche prima che le tue funzioni.php siano registrate.
$included_files = str_replace('\\', '/', get_included_files());
Stiamo usando il get_included_files () nativo di PHP, convertendo le barre rovesciate in barre inverse in modo che corrispondano alla maggior parte dei percorsi di ritorno di Wordpress.
2) Stiamo tagliando quell'array da cui è registrato template-loader.php. Dopodiché, nei file get_included_files () popolati dovrebbero essere popolati solo i file modello.
/* 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) Ridurre i risultati, non è necessario il percorso fino a quando la cartella del tema o la cartella del plug-in, come modelli in uso, possono essere mescolati da plugin, temi o cartelle di temi figlio.
$replacement = $path.'wp-content/';
$output = str_replace($replacement, '', $output);
4) Infine, converti dall'array in un piacevole elenco HTML
$output = '<ul><li>'.implode('</li><li>', $output).'</li></ul>';
Un'ultima modifica potrebbe essere necessario in part3) -Sostituzione , se si dont desidera è prevista l' dai plugin. Potrebbero chiamare in class-files
ritardo e "intercettare" durante l'elaborazione dell'output del modello.
Tuttavia, ho trovato ragionevole lasciarli visibili, poiché l'idea è quella di tracciare ciò che è stato caricato , anche se non è un "modello" che rende l'output in questa fase.