Afisează numele fișierelor de șabloane WordPress pentru depanare
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.
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' );

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.

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

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);
}

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
