Drucken Sie die Dateinamen der WordPress-Vorlage zum Debuggen


8

Ich habe die Wartung einer großen WP-MS-Site übernommen. Die Site verfügt über ca. 200 Vorlagen, viele seitenspezifisch und ohne Standardbenennungsverfahren.

Es würde viel Zeit sparen, wenn ich beim Surfen auf der Website die Vorlagennamen sehen kann, aus denen die aktuelle Seite besteht. Ist das möglich? Ich habe mir die Debug-Plugins für WordPress angesehen, aber sie scheinen auf Variablen und SQL-Abfragen ausgerichtet zu sein, nicht auf Vorlagen.

Antworten:


5

Dies ist auch ein schneller Weg.

<!--

<?php print_r( debug_backtrace() ) ?>

-->

Fügen Sie es kurz vor dem schließenden Tag ein


2
Beim Testen ist dies zuverlässiger als der Code von @ kaiser, da er auf Seiten und Posts funktioniert. aber es ist auch viel verwirrender zu lesen :)
PeterB

3

Die folgenden Funktionen machen 3 Dinge:

  • Zeigen Sie die Vorlagenhierarchie für die aktuelle Anforderung an
  • Zeigen Sie das verwendete Thema an (2 Möglichkeiten, um das gezeigte zu erreichen)
  • Zeigen Sie die aktuell für die Anfrage verwendete Vorlage an *)

*) Fügen Sie es dem Inhaltsfilter hinzu. Abhängig von Ihrer Rolle müssen Sie möglicherweise mit der Bedingung oder Fähigkeit spielen. Bisher kenne ich keine Lösung, um die Seitenvorlage für Archive und ähnliche Listenansichtsanforderungen anzuzeigen.

// That's not that easy to read:
var_dump( get_required_files() );

/** 
 * Show template hierarchy and theme at the end of the request/page.
 * @return void
 */
function wpse31909_template_info()
{
        // Don't display for non-admin users
        if ( ! current_user_can( 'manage_options' ) )
            return;

        // You have to build yourself the hierarchy here or somewhere in front of the fn
        global $wp_template_hierarchy;

        $content  = '<pre>';
            // Show template hierarchy
            $content .= "TEMPLATE HIERARCHY\n==================\n";
            $content .= var_export( $wp_template_hierarchy, true );

            // Show current theme in use:
            $content .= "\n\nCURRENT THEME\n=============\n";
            $content .= var_export( get_option( 'template' ), true );
            // or: 
            # $content .= var_export( get_template(), true );
        $content .= '</pre>';

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


/**
 * Show template on singular views attached to the end of the content for admins
 * @return $content
 */
function wpse31909_template_to_content( $content )
{
        // Display standard content for non-admin users and not single post/page/cpt/attachment view.
        if ( ! current_user_can( 'manage_options' ) && ! is_singular() )
            return $content;

        $content .= '<pre>';
            // Show current template in use: Must be in the loop to get the 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' );

Möglicherweise funktioniert es, wenn Sie die zweite Funktion auch an den the_excerptFilter anschließen. Vermutlich wird es dann auch in Listenansichten angezeigt. @All Fühlen Sie sich frei, diese Antwort zu bearbeiten und zu erweitern.
Kaiser

1
Es gibt einen Tippfehler mit der Variablen in der ersten var_dump.
t31os

@ t31os Willst du es nicht reparieren? Bringt bei jeder Gegenstimme +2 Wiederholungspunkte.
Trotzdem

Nicht so viel herum, war eher eine Drive-by-Beobachtung ..;)
t31os

@ t31os Ein ziemlich guter. Ich bin froh, dass es nicht "fitler" statt "filter" war;)
kaiser

2

Ich verwende dies, um einfach den Dateinamen der Vorlage oben auf der Seite zu Debugging-Zwecken auszudrucken.

// Zum Debuggen - Vorlagendatei anzeigen
add_action ('wp_head', 'show_template');
Funktion show_template () {
    globale $ Vorlage;
    print_r ($ template);
}}

-1

Obwohl dies keine direkte Antwort auf die vorliegende Frage ist, sollte hier wahrscheinlich auch angemerkt werden, dass WordPress dem <body>Tag für benutzerdefinierte Seitenvorlagen standardmäßig einen Klassennamen hinzufügt . Wenn Sie beispielsweise eine Seite mit einer benutzerdefinierten Seitenvorlage anzeigen und der Dateiname der Vorlage custom.php lautet, page-template-customwird dem <body>Tag ein Klassenname von hinzugefügt .

Die Dokumentation zu dieser Funktion finden Sie hier: https://codex.wordpress.org/Function_Reference/body_class#Page

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.