Afisează numele fișierelor de șabloane WordPress pentru depanare

24 oct. 2011, 13:06:38
Vizualizări: 8.18K
Voturi: 8

Am preluat întreținerea unui site mare alimentat de WP-MS. Site-ul are ~200 de șabloane, multe specifice unor pagini, fără o procedură standard de denumire.

Mi-ar economisi mult timp dacă, în timp ce navighez pe site, aș putea vedea numele șabloanelor care alcătuiesc pagina curentă. Este posibil acest lucru? Am verificat plugin-urile de depanare pentru WordPress, dar par axate pe variabile și interogări SQL, nu pe șabloane.

0
Toate răspunsurile la întrebare 4
1

aceasta este de asemenea o metodă rapidă;

<!--

<?php print_r( debug_backtrace() ) ?>

-->

inserează acest cod chiar înainte de tag-ul de închidere

24 oct. 2011 18:54:58
Comentarii

În testare, această metodă este mai fiabilă decât codul lui @kaiser, deoarece funcționează atât pe pagini, cât și pe articole; dar este și mult mai confuz de citit :)

PeterB PeterB
25 oct. 2011 10:40:22
5

Următoarele funcții fac 3 lucruri:

  • Afișează ierarhia de șabloane pentru cererea curentă
  • Afișează tema în uz (sunt prezentate 2 metode pentru a realiza acest lucru)
  • Afișează șablonul curent utilizat pentru cerere *)

*) Atașați-o la filtrul de conținut. Poate fi necesar să ajustați condiționalul sau capacitatea în funcție de rolul dvs. Până acum nu cunosc o soluție pentru a afișa șablonul de pagină pentru arhive și cereri similare de vizualizare în listă.

// Nu este foarte ușor de citit:
var_dump( get_required_files() );

/** 
 * Afișează ierarhia de șabloane și tema la sfârșitul cererii/paginii.
 * @return void
 */
function wpse31909_template_info()
{
        // Nu afișa pentru utilizatorii non-administratori
        if ( ! current_user_can( 'manage_options' ) )
            return;

        // Trebuie să construiți singuri ierarhia aici sau înainte de funcție
        global $wp_template_hierarchy;

        $content  = '<pre>';
            // Afișează ierarhia de șabloane
            $content .= "IERARHIA DE ȘABLOANE\n==================\n";
            $content .= var_export( $wp_template_hierarchy, true );

            // Afișează tema curentă în uz:
            $content .= "\n\nTEMA CURENTĂ\n=============\n";
            $content .= var_export( get_option( 'template' ), true );
            // sau: 
            # $content .= var_export( get_template(), true );
        $content .= '</pre>';

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


/**
 * Afișează șablonul pe vizualizări singular atașat la sfârșitul conținutului pentru administratori
 * @return $content
 */
function wpse31909_template_to_content( $content )
{
        // Afișează conținutul standard pentru utilizatorii non-administratori și vizualizări care nu sunt post/pagină/cpt/atașament singular.
        if ( ! current_user_can( 'manage_options' ) && ! is_singular() )
            return $content;

        $content .= '<pre>';
            // Afișează șablonul curent în uz: Trebuie să fie în buclă pentru a obține 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 oct. 2011 15:08:52
Comentarii

Poate ar funcționa dacă atașezi și a doua funcție la filtrul the_excerpt. Cred că atunci ar apărea și în vizualizările de listă. @Toți Simțiți-vă liberi să editați și să extindeți acest răspuns.

kaiser kaiser
24 oct. 2011 15:10:38

Există o greșeală de tipar cu variabila în primul var_dump.

t31os t31os
24 oct. 2011 16:49:17

@t31os Nu vrei să o repari? Aduce +2 puncte de reputație la fiecare vot pozitiv. Oricum, mulțumesc :)

kaiser kaiser
24 oct. 2011 17:00:34

Nu prea sunt prin preajmă, a fost mai mult o observație în treacăt.. ;)

t31os t31os
25 oct. 2011 13:21:50

@t31os Una destul de bună. Mă bucur că nu a fost "fitler" în loc de "filter" ;)

kaiser kaiser
25 oct. 2011 17:05:23
0

Folosesc acest cod pentru a afișa simplu numele fișierului șablonului în partea de sus a paginii în scopuri de depanare.

// Pentru depanare - afișează fișierul șablon
add_action('wp_head', 'show_template');
function show_template() {
    global $template;
    print_r($template);
}
21 nov. 2011 23:39:52
0
-1

Deși nu este direct un răspuns la întrebarea din discuție, este important de menționat că, implicit, WordPress adaugă o clasă la tag-ul <body> pentru șabloanele personalizate de pagină. De exemplu, dacă vizualizați o pagină care folosește un șablon personalizat, iar numele fișierului șablonului este custom.php, atunci va fi adăugată clasa page-template-custom la tag-ul <body>.

Documentația pentru această funcționalitate poate fi găsită aici: https://codex.wordpress.org/Function_Reference/body_class#Page

2 apr. 2016 20:47:17