Stampa il nome del template WordPress per il debug

24 ott 2011, 13:06:38
Visualizzazioni: 8.18K
Voti: 8

Ho preso in carico la manutenzione di un grande sito basato su WP-MS. Il sito ha circa 200 template, molti specifici per pagina e senza una procedura di denominazione standard.

Risparmierei molto tempo se, mentre navigo nel sito, potessi vedere i nomi dei template che compongono la pagina corrente. È possibile? Ho esaminato i plugin di debug per WordPress, ma sembrano focalizzati su variabili e query SQL, non sui template.

0
Tutte le risposte alla domanda 4
1

questo è anche un metodo rapido;

<!--

<?php print_r( debug_backtrace() ) ?>

-->

incollalo appena prima del tag di chiusura

24 ott 2011 18:54:58
Commenti

Nei test questo è più affidabile del codice di @kaiser, poiché funziona sia su pagine che su articoli; ma è anche molto più confuso da leggere :)

PeterB PeterB
25 ott 2011 10:40:22
5

Le seguenti funzioni fanno 3 cose:

  • Mostrano la gerarchia dei template per la richiesta corrente
  • Mostrano il tema in uso (vengono mostrati 2 modi per ottenere questo risultato)
  • Mostrano il template corrente in uso per la richiesta *)

*) Allega il filtro al contenuto. Potresti dover giocare con i condizionali o le capability a seconda del tuo ruolo. Finora non conosco una soluzione per mostrare il template della pagina per archivi e richieste simili di tipo lista.

// Non è così facile da leggere:
var_dump( get_required_files() );

/** 
 * Mostra la gerarchia dei template e il tema alla fine della richiesta/pagina.
 * @return void
 */
function wpse31909_template_info()
{
        // Non mostrare per utenti non amministratori
        if ( ! current_user_can( 'manage_options' ) )
            return;

        // Devi costruire tu stesso la gerarchia qui o da qualche parte prima della funzione
        global $wp_template_hierarchy;

        $content  = '<pre>';
            // Mostra la gerarchia dei template
            $content .= "GERARCHIA DEI TEMPLATE\n==================\n";
            $content .= var_export( $wp_template_hierarchy, true );

            // Mostra il tema corrente in uso:
            $content .= "\n\nTEME CORRENTE\n=============\n";
            $content .= var_export( get_option( 'template' ), true );
            // oppure: 
            # $content .= var_export( get_template(), true );
        $content .= '</pre>';

        return print $content;
}
add_action( 'shutdown', 'wpse31909_template_info' );


/**
 * Mostra il template nelle visualizzazioni singole allegato alla fine del contenuto per gli amministratori
 * @return $content
 */
function wpse31909_template_to_content( $content )
{
        // Mostra il contenuto standard per utenti non amministratori e non in visualizzazione singola di post/pagina/cpt/allegato.
        if ( ! current_user_can( 'manage_options' ) && ! is_singular() )
            return $content;

        $content .= '<pre>';
            // Mostra il template corrente in uso: Deve essere nel loop per ottenere il global $post
           $content .= var_export( get_post_meta( $GLOBALS['post']->ID, '_wp_page_template' ), true );
        $content .= '</pre>';

        return $content;
}
add_filter( 'the_content', 'wpse31909_template_to_content' );
24 ott 2011 15:08:52
Commenti

Forse potrebbe funzionare se colleghi anche la seconda funzione al filtro the_excerpt. Immagino che in questo modo apparirebbe anche nelle viste elenco. @Tutti Sentitevi liberi di modificare e ampliare questa risposta.

kaiser kaiser
24 ott 2011 15:10:38

C'è un errore di battitura con la variabile nel primo var_dump.

t31os t31os
24 ott 2011 16:49:17

@t31os Non vuoi correggerlo? Porta +2 punti reputazione ad ogni upvote. Grazie comunque :)

kaiser kaiser
24 ott 2011 17:00:34

Non molto presente, era più un'osservazione di passaggio.. ;)

t31os t31os
25 ott 2011 13:21:50

@t31os Una buona osservazione. Contento che non fosse "fitler" invece di "filter" ;)

kaiser kaiser
25 ott 2011 17:05:23
0

Utilizzo questo codice per stampare semplicemente il nome del file del template in cima alla pagina a scopo di debug.

// Per debug - mostra il file del template
add_action('wp_head', 'show_template');
function show_template() {
    global $template;
    print_r($template);
}
21 nov 2011 23:39:52
0
-1

Anche se non è direttamente una risposta alla domanda in questione, probabilmente vale la pena notare qui che WordPress aggiunge per impostazione predefinita un nome di classe al tag <body> per i template di pagina personalizzati. Quindi, ad esempio, se stai visualizzando una pagina che ha un template personalizzato e il nome del file del template è custom.php, allora verrà aggiunta una classe con nome page-template-custom al tag <body>.

La documentazione su questa funzionalità può essere trovata qui: https://codex.wordpress.org/Function_Reference/body_class#Page

2 apr 2016 20:47:17