Wie finden Sie heraus, welche Vorlagenseite die aktuelle Seite bedient?

Wenn Sie ein WordPress-Theme aktivieren, ist es immer mühsam herauszufinden, welche Datei zu ändern ist. Irgendeine Idee, wie man Sachen vereinfacht?

Auf der anderen Seite kann dies unter Berücksichtigung der get_template_part-functionalität unmöglich sein. Was sagst du?

Solutions Collecting From Web of "Wie finden Sie heraus, welche Vorlagenseite die aktuelle Seite bedient?"

Hole auf template_include , setze ein globales Element, um die durch das Thema gesetzte Vorlage zu notieren, und lese dann diesen Wert zurück in die Fußzeile oder Kopfzeile, um zu sehen, welche Vorlage für eine gegebene Ansicht aufgerufen wird.

Ich sprach über diesen Filter-Hook zuvor in Name der aktuellen Vorlagendatei , aber gehen Sie eine Kopie dieses Codes und plonk es die functions.php Datei Ihres Themas.

Öffnen Sie dann die header.php oder footer.php des Themas (oder wo immer Sie footer.php ) und verwenden Sie etwas wie folgt, um die aktuelle Vorlage auszudrucken.

 
Current template: < ?php get_current_template( true ); ?>

Wenn Sie dies in einer Produktionsumgebung verwenden und diese Informationen von Benutzern ohne Administratorrechte entfernen möchten, fügen Sie eine kleine bedingte Logik hinzu.

 < ?php // If the current user can manage options(ie. an admin) if( current_user_can( 'manage_options' ) ) // Print the saved global printf( '
Current template: %s', get_current_template() ); ?>

Jetzt können Sie verfolgen, welche Ansichten welche Vorlage verwenden, und diese Informationen von Ihren Besuchern fernhalten.

Nun, wenn Sie nur überprüfen möchten, welche Vorlagendatei zum Generieren der aktuellen Seite verwendet wurde, müssen Sie sich nicht die Hände mit Code schmutzig machen;)

Es gibt dieses praktische Plugin namens Debug Bar . Es ist ein großartiger Helfer in vielen Situationen, einschließlich Ihrer. Du solltest es auf jeden Fall ausprobieren – für mich und viele andere ist es ein unverzichtbarer Begleiter für jede WP-Entwicklung.

Ich habe einen Screenshot angehängt, mit dem Sie sich verlieben könnten …

Bildbeschreibung hier eingeben

Um die Debug-Leiste zu aktivieren, wp_debug wp_savequeries Optionen wp_debug und wp_savequeries . Diese Optionen sind standardmäßig deaktiviert.

Bevor Sie jedoch Änderungen vornehmen, sollten Sie einige Punkte beachten:

  • Tun Sie es nicht in der Produktionsumgebung, es sei denn, die Website ist nicht für viel Verkehr geeignet.
  • Wenn Sie mit dem Debuggen fertig sind, stellen Sie sicher , dass die Optionen (insbesondere die Option wp_savequeries, da sie die performance beeinträchtigen) der Website deaktiviert werden.

Um die Änderungen vorzunehmen:

  1. Öffnen wp_config.php Datei wp_config.php über einen FTP-Client.
  2. Suchen Sie nach der Option wp_debug . Edit es zu define( 'WP_DEBUG', true ); . Wenn die Zeile nicht vorhanden ist, fügen Sie sie zur Datei hinzu.
  3. Bearbeiten oder fügen Sie die Zeile define( 'SAVEQUERIES', true ); zu der Datei.
  4. Sparen. Sie sind bereit zu debuggen.

Weitere Informationen: Codex

Fügen Sie den folgenden Code direkt nach der Zeile “get_header” in jeder relevanten Vorlagendatei hinzu:

  

In Ihrem Browser> Quelltext anzeigen, wird der Vorlagenname als Kommentar in Ihrem HTML-Code angezeigt, z

  

Ich benutze diese praktische function, die die aktuelle Vorlage nur für Superadministratoren anzeigt:

 function show_template() { if( is_super_admin() ){ global $template; print_r($template); } } add_action('wp_footer', 'show_template'); 

Ich hoffe, das hilft. 🙂

Der einfachste Weg, den ich gefunden habe, ist, die WordPress-function in das Body-Tag aufzunehmen. Je nachdem, welche Seite angezeigt wird, werden mehrere classn hinzugefügt (Startseite für die Vorderseite, Seite für Seite usw.).

Schau es dir hier an: http://codex.wordpress.org/Function_Reference/body_class

Außerdem ist es hilfreich, Elemente mit CSS auf diesen Seiten zu targetieren.

Es ist auch eine gute Idee, die Template-Hierarchie (http://codex.wordpress.org/Template_Hierarchy) kennenzulernen, wie David R erwähnte.

Es gibt ein weiteres blankes Plugin speziell für diesen Zweck. Ich lehne die Installation der Debug-Leiste an, weil diese anderen functionen nützlich erscheinen, aber diese ist einfacher und spezifisch für diesen Zweck: http://wordpress.org/extend/plugins/what-the-file/

Eine sehr einfache Sache ist es, einen HTML-Kommentar einzufügen, der die Vorlagendatei in jeder relevanten Datei des Themas identifiziert, zB oben in der index.php, die ich habe

  

und oben auf der Startseite

  

Aber das erfordert natürlich das Ändern des Themas. Ich vermute, dass Sie eine benutzerdefinierte function in der Datei footer.php oder header.php hinzufügen könnten, die Ihnen sagen würde, welche Datei verwendet wurde. Die obige Methode und das Referenzdiagramm http://codex.wordpress.org/Template_Hierarchy sind, was ich verwende.

Es gibt ein Plugin namens Theme Check, das genau das tut. Es zeigt den Namen der aktuellen Vorlagendatei an, die als HTML-Kommentar verwendet wird.

Bitte schön:

Eine HTML-Liste mit allen Schablonendateien, die für die aktuelle Zielseite verwendet werden, einschließlich aller Schablonenteile aus Plugins, untergeordneten Designs und / oder übergeordneten Designs , alle in einer Codezeile:

 echo '
  • '.implode('
  • ', 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)))).'
';

Sie müssen möglicherweise überprüfen, dass Ihr Server keine doppelten Schrägstriche auf irgendeinem Pfad zurückgibt . Denken Sie daran, dies nach allen tatsächlich verwendeten Template-Dateien zu platzieren, wie in footer.php, aber bevor die Admin-Leiste rendert .

Wenn der Pfad der admin-bar stuff oben oder in einer anderen Datei template-loader.php , ändern Sie den Dateinamen template-loader.php in dieser Codezeile wie folgt: Welchen Dateinamen auch immer Sie verwenden möchten. Oft: class-wp-admin-bar.php

Wenn Sie dies in der Admin-Leiste benötigen, verwenden Sie die früheste Priorität, um sicherzustellen, dass keine Dateien am Ende dieser Liste eingegeben werden . Beispielsweise:

 add_action('admin_bar_menu', 'my_adminbar_template_monitor', -5); 

Priority -5 Stellen Sie sicher, dass es zuerst lädt. Der Schlüssel ist, get_included_files() im richtigen Moment get_included_files() , sonst wird ein Array-Popping benötigt!

Um das aufzulösen:

Sie können nicht alle enthaltenen Vorlagendateien ohne PHP-Backtrace sammeln. Superglobals in template_include nicht alle sammeln . Die andere Möglichkeit besteht darin, in jede Vorlagendatei einen “Marker” zu setzen, aber wenn Sie zuerst mit den Dateien interagieren müssen, müssen Sie mit der Zeit und der ganzen Idee hantieren.

1) Wir müssen alle Dateien überprüfen, die von der aktuellen WordPress-Anfrage verwendet wurden. Und sie sind viele! Seien Sie nicht überrascht, wenn Sie 300 Dateien verwenden, bevor Ihre functions.php registriert ist.

 $included_files = str_replace('\\', '/', get_included_files()); 

Wir verwenden die native native get_included_files () von PHP und konvertieren umgekehrte Schrägstriche, um Schrägstriche an die meisten von WordPress zurückkehrenden Pfaden weiterzuleiten.

2) Wir schneiden dieses Array von wo die Template-Loader.php registriert ist. Danach sollte die aufgefüllte Datei get_included_files () nur die Vorlagendateien enthalten.

 /* 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) Verkürzen Sie die Ergebnisse, wir brauchen nicht den Pfad, bis Thema Ordner oder Plugin-Ordner, wie Vorlagen in Verwendung, können von Plugins, Thema oder Kind Thema Ordner gemischt werden.

 $replacement = $path.'wp-content/'; $output = str_replace($replacement, '', $output); 

4) Schließlich, konvertieren von Array zu einer schönen HTML-Liste

 $output = '
  • '.implode('
  • ', $output).'
';

Eine letzte Änderung kann in Teil 3) -Umsetzung erforderlich sein , wenn Sie nicht möchten, dass die Plugins diese beinhalten. Sie könnten die class-files spät aufrufen und während der Verarbeitung der Vorlagenausgabe “abfangen”.

Ich hielt es jedoch für sinnvoll, sie sichtbar zu lassen, da die Idee darin besteht, nachzuverfolgen, was geladen wurde , auch wenn es sich in diesem Stadium nicht um ein “Template” handelt, das die Ausgabe rendert .