Wie finden Sie heraus, welche Vorlagenseite die aktuelle Seite bedient?
-
-
Ichinspiziere das HTML undfindeein identifiziertes Tag oderetwas Einzigartiges.I inspect the html and find an identified tag or something unique.
- 1
- 2011-12-27
- Naoise Golden
-
Zeigen Sie den Quellcode an und suchen Sienach den Body-Klassen,aus denen hervorgeht,welche Vorlage verwendet wird.Gibt Ihnen auch diei.d.View the source code and look for the body classes which tell you which template is used. Also gives you the i.d.
- 1
- 2014-02-04
- Brad Dalton
-
Mögliches Duplikat von [Name der aktuellen Vorlagendatei abrufen] (https://wordpress.stackexchange.com/questions/10537/get-name-of-the-current-template-file)Possible duplicate of [Get name of the current template file](https://wordpress.stackexchange.com/questions/10537/get-name-of-the-current-template-file)
- 0
- 2017-06-13
- Burgi
-
@BradDalton +1.Insbesondere,wenn wir kein Plugininstallieren odereine Funktion schreiben dürfen,um das Ziel zuerreichen.@BradDalton +1. Specially when we are not allowed to install a plugin or write a function to achieve the goal.
- 0
- 2018-07-13
- Subrata Sarkar
-
9 Antworten
- Stimmen
-
- 2011-12-26
Hängen Sie sichin
template_include
ein,legen Sieein globales Elementfest,um die vom Themafestgelegte Vorlage zunotieren,und lesen Sie diesen Wert dannin die Fußzeile oder Kopfzeile zurück,um zu sehen,welche Vorlagefüreine bestimmte Ansicht aufgerufen wird.Ich habebereitsin über diesen Filter-Hookgesprochen Vorlagendatei ,aber holen Sie sicheine Kopie dieses Codes und klicken Sie auf die
functions.php
-Datei.Öffnen Sie dann die
header.php
oderfooter.php
(oder woimmer Siemöchten) des Themas und drucken Sie die aktuelle Vorlage wiefolgt aus.<div><strong>Current template:</strong> <?php get_current_template( true ); ?></div>
Wenn Sie dies aufeiner Produktionssite verwenden und diese Informationen von Ihren Nicht-Administrator-Benutzernfernhaltenmöchten,fügen Sieeine kleinebedingte Logik hinzu.
<?php // If the current user can manage options(ie. an admin) if( current_user_can( 'manage_options' ) ) // Print the saved global printf( '<div><strong>Current template:</strong> %s</div>', get_current_template() ); ?>
Jetzt können Sie verfolgen,welche Ansichten welche Vorlage verwenden,während Sie diese Informationen von Ihren Besuchernfernhalten.
Hook onto
template_include
, set a global to note the template set by the theme then read that value back into the footer or header to see which template is being called for a given view.I spoke about this filter hook before in Get name of the current template file, but go grab a copy of that code and plonk it your theme's
functions.php
file.Then open up the theme's
header.php
orfooter.php
(or wherever you like) and use something like the following to print out the current template.<div><strong>Current template:</strong> <?php get_current_template( true ); ?></div>
If you wanted to use this on a production site and keep that info away from your non-administrator users, add a little conditional logic.
<?php // If the current user can manage options(ie. an admin) if( current_user_can( 'manage_options' ) ) // Print the saved global printf( '<div><strong>Current template:</strong> %s</div>', get_current_template() ); ?>
Now you can keep track of what views are using what template, whilst keeping that info away from your visitors.
-
Wennmit dieser Antwortetwasnicht stimmt oder wennjemand Kommentare dazu abgeben könnte,wasgetan werden könnte,um diese Antwort zu verbessern,schreiben Sie hiereinen Kommentar undteilen Sie Ihre Gedanken und Ideenmit,wie Sie sie verbessern können.If there is something wrong with this answer, or if anyone could provide comments on what could be done to improve this answer, have at it, drop a comment here and share your thoughts and ideas on how to make it better.
- 1
- 2014-01-28
- t31os
-
Es hatnichtfunktioniert,Bruder,es heißt "Undefinierte Funktion"It didn't work bro, it says "Undefined function"
- 1
- 2016-04-27
- Lucas Bustamante
-
@ LucasBgleich hier,dasist der Fehler,denichbekommen habe@LucasB same here, that's the error I got
- 1
- 2017-01-07
- Lincoln Bergeson
-
Dies sollte [`get_page_template`] sein (https://codex.wordpress.org/Function_Reference/get_page_template)This should be [`get_page_template`](https://codex.wordpress.org/Function_Reference/get_page_template)
- 2
- 2017-08-11
- Blazemonger
-
`get_current_template`ist keine Funktion und`get_page_template` drucktnichtsfürmich (eine Woocommerce-Seite).`get_current_template` is not a function and `get_page_template` prints nothing for me (a woocommerce page).
- 0
- 2020-06-27
- run_the_race
-
- 2011-12-26
Wenn Sienur überprüfenmöchten,welche Vorlagendatei zum Generieren der aktuellen Seite verwendet wurde,müssen Sie sichnichtmit Code die Hände schmutzigmachen;)
Esgibt diesespraktische Pluginnamens Debug-Leiste . Esistein großartiger Helferin vielen Situationen,einschließlich Ihrer. Sie solltenes aufjeden Fall ausprobieren -fürmich und viele andereistesein Mussfürjede WP-Entwicklung.
Ich habeeinen Screenshot angehängt,in den Sie sich verlieben könnten ...
Damit die Debug-Leiste funktioniert ,müssen Sie die Optionen
wp_debug
undwp_savequeries
aktivieren. Diese Optionen sind standardmäßig deaktiviert.Bevor Siejedoch Änderungen vornehmen,sollten Sieeinige Punktebeachten:
- Tun Sie diesnichtin einer Produktionsumgebung,es sei denn,die Websitebietet nicht viel Verkehr.
- Stellen Sienach Abschluss des Debuggens sicher,dass Sie die Optionen (insbesondere die Option wp_savequeries,da dies die Leistungbeeinträchtigt) der Website deaktivieren .
Sonehmen Sie die Änderungen vor:
- Öffnen Sie die Datei
wp_config.php
übereinen FTP-Client. - Suchen Sienach der Option
wp_debug
. Bearbeiten Siees zudefine( 'WP_DEBUG', true );
. Wenn die Zeilenicht vorhandenist,fügen Sie sie der Datei hinzu. - Bearbeiten oderfügen Siein ähnlicher Weise die Zeile
define( 'SAVEQUERIES', true );
zur Datei hinzu. - Speichern. Sie könnenjetzt debuggen.
Weitere Informationen: Codex
Well, if all you want is to check which template file has been used to generate the current page then you don't need to get your hands dirty with code ;)
There's this handy plugin called Debug Bar. It's a great helper in many situations including yours. You should definitely check it out - for me and many others it's a must-have companion for any WP development.
I've attached a screenshot that could make you fall in love...
To get the Debug Bar working, you need to enable
wp_debug
andwp_savequeries
options. These options are in disabled state by default.Before you make any changes though, there are a few points to keep in mind:
- Do not do it in production environment unless the website doesn't cater to a lot of traffic.
- Once you finish debugging, ensure to disable the options (especially the wp_savequeries option since it affects the performance) of the website.
To make the changes:
- Open
wp_config.php
file through a ftp client. - Search for
wp_debug
option. Edit it todefine( 'WP_DEBUG', true );
. If the line is not present, add it to the file. - Similarly, edit or add the line
define( 'SAVEQUERIES', true );
to the file. - Save. You are ready to debug.
More info: Codex
-
@justCallMeBiru - Das Debug Bar Pluginbenötigt keine WP_DEBUG und SAVEQUERIES,obwohles vonihnenerweitert wird.@justCallMeBiru -- the Debug Bar plugin doesn't *require* `WP_DEBUG` and `SAVEQUERIES`, though it is *enhanced* by them.
- 2
- 2014-01-15
- Pat J
-
Das Ausführeneines solchen Plugins,nurfüreine kleine Information,verursachtimhoeine Menge Overhead,und deshalb habeichesin meinereigenen Antwortnicht vorgeschlagen.Das heißt,klar,die Leutebevorzugen diese Antwort,ichbin gespannt,warum.Running such a plugin, just for one tid bit of information creates alot of overhead imho, and thus it is why i did not suggest it in my own answer. That said, clearly people prefer this answer, i'm curious to know why though.
- 3
- 2014-01-28
- t31os
-
- 2014-01-23
Ich verwende diesepraktische Funktion,mit der die aktuelle Vorlagenurfür Superadministratoren angezeigt wird:
function show_template() { if( is_super_admin() ){ global $template; print_r($template); } } add_action('wp_footer', 'show_template');
Hoffe das hilft.:)
I use this handy function that displays the current template only for super admins:
function show_template() { if( is_super_admin() ){ global $template; print_r($template); } } add_action('wp_footer', 'show_template');
Hope that helps. :)
-
Diesist die Antwort,die akzeptiert werden sollte.This is the goto answer, should be accepted.
- 3
- 2018-03-13
- Hybrid Web Dev
-
Ichbenutze dies auch,aberesfehltimmernoch die Anzeige,welches "Include" verwendet wird und zeigtnur die Seite der obersten Ebene.I use this also but it still lacks the display of which “include” is being used and only shows the top level page.
- 0
- 2020-07-08
- Burndog
-
- 2011-12-27
Fügen Sie denfolgenden Code direktnach der Zeileget_headerin jede relevante Vorlagendateiein:
<!-- <?php echo basename( __FILE__ ); ?> -->
In Ihrem Browser> Quelltext anzeigen und der Vorlagenname wird als Kommentarin Ihrem HTML-Code angezeigt,z. B.
<!-- page.php -->
Add the following code right after the get_header line in each relevant template file:
<!-- <?php echo basename( __FILE__ ); ?> -->
In your browser > view source, and the template name will be displayed as a comment in your html code, e.g.
<!-- page.php -->
-
Esist zu viel Aufwand,dies überall hinzuzufügenit's too much effort to add this everywhere
- 0
- 2019-02-18
- Adal
-
hahaha,warum sollteman sich damitbeschäftigen,wennmanjede Dateibeschriften will,dannbeschriften Sie sieeinfachmit ihremtatsächlichen Dateinamen!hahaha, why bother with this if you're going to label each file then simply label it with its actual file name!
- 0
- 2020-05-09
- Aurovrata
-
@ Aurovrataesist lange her.Esgibt vielbessere Lösungen.Ich hattejedochein einfaches Skript,um den Code obenin alle Dateieneines Ordnerseinzufügen,sodass keine Hardcodierung dertatsächlichen Namenerforderlich war.Fertigin 1 oder 2 Sekunden.@Aurovrata it was a long time ago. There are way better solutions. But I had a simple script to insert the code at the top of all files in a folder, so no hardcoding of actual names required. Done in 1 or 2 seconds.
- 0
- 2020-05-20
- ronald
-
Fairgenug,:)fair enough, :)
- 0
- 2020-05-21
- Aurovrata
-
- 2017-09-15
Losgeht's:
Eine HTML-Listemit allen Vorlagendateien,diefür die aktuelle Zielseite verwendet werden,einschließlich aller Vorlagenteile aus Plugins,untergeordneten und/oder übergeordneten Themenkombinationen . allesin einer Codezeile:
echo '<ul><li>'.implode('</li><li>', 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)))).'</li></ul>';
Möglicherweisemüssen Sie überprüfen ,ob Ihr Server auf keinem Pfad Dubble-Schrägstriche zurückgibt . Denken Sie daran,dies zuplatzieren,nachdem alle Vorlagendateientatsächlich verwendet wurden,wiein footer.php,aber vor dem Rendern der Admin-Leiste .
Wenn der Pfad
admin-bar stuff
oben odereine andere Datei angezeigt wird,ändern Sie den Dateinamentemplate-loader.php
in dieser Codezeilein: was auchimmer Dateiname,von dem Sie abbrechenmüssen. Oft:class-wp-admin-bar.php
Wenn Sie diesin der Admin-Leistebenötigen, verwenden Sie die richtige Priotität (frühestens) ,um sicherzustellen,dass am Ende dieser Liste keine Dateieneingegeben werden. Zum Beispiel:
add_action('admin_bar_menu', 'my_adminbar_template_monitor', -5);
Priorität
-5
Stellen Sie sicher,dasses zuerstgeladen wird. Der Schlüsselist,get_included_files()
im richtigen Moment aufzurufen,andernfallsistein Array-Poppingerforderlich!Sobrechen Sie das auf:
Sie können nicht alleenthaltenen Vorlagendateien ohne PHP-Backtrace erfassen. Superglobals in
template_include
sammelnnicht alle . Die andere Möglichkeitbesteht darin,in jeder Vorlagendateieinen "Marker" zuplatzieren. Wenn Siejedoch zuerstmit den Dateieninteragierenmüssen,sind Siemit der Zeit und dergesamten Ideebeschäftigt.1) Wirmüssen alle Dateien überprüfen,die von der aktuellen Wordpress-Anfrage verwendet wurden. Und sie sind viele! Seien Sienicht überrascht,wenn Sie 300 Dateien verwenden,bevor auch Ihrefunctions.php registriertist.
$included_files = str_replace('\\', '/', get_included_files());
Wir verwenden dasnative PHPget_included_files () und konvertieren Backslashesin Forward-Slashes,um denmeisten Wordpress-Rückgabepfaden zuentsprechen.
2) Wir schneiden das Array aus,von dem aus die Dateitemplate-loader.php registriertist. Danach solltenin den ausgefülltenget_included_files ()nurnoch Vorlagendateien ausgefüllt sein.
/* 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,wirbenötigen den Pfaderst,wenn der Themenordner oder Plugin-Ordner als verwendete Vorlagen gemischt werden kann aus Plugins,Themen- oder untergeordneten Themenordnern.
$replacement = $path.'wp-content/'; $output = str_replace($replacement, '', $output);
4) Konvertieren Sie schließlich vom Arrayin eine schöne HTML-Liste
$output = '<ul><li>'.implode('</li><li>', $output).'</li></ul>';
Möglicherweiseisteine letzte Änderungerforderlich in Teil 3) -Ersetzung ,wenn Sie nichtmöchten,dass erforderliche Includes vonenthält Plugins. Sie können
class-files
spät aufrufen und während der Verarbeitung der Vorlagenausgabe "abfangen".Ichfandesjedoch vernünftig,sie sichtbar zu lassen,da die Idee darinbesteht,zu verfolgen,wasgeladen wurde ,auch wennes sichnicht umeine "Vorlage" handelt,die die Ausgabein dieser Phase rendert.
Here you go:
A HTML-list with all template files in use for the current landing page, including all template-parts from plugins, child theme and/ or parent theme combinations, all in one line of code:
echo '<ul><li>'.implode('</li><li>', 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)))).'</li></ul>';
You MAY need to check that your server does not returning dubble slashes at any path. Remember to place this after all template files actually been used, like in footer.php, but before admin bar renders.
if
admin-bar stuff
path is showing at the top, or any other file, change the filenametemplate-loader.php
in this line of code to: whatever filname you need to break from. Often:class-wp-admin-bar.php
if you need this in the admin bar, use the right priotity (earliest) to make shure no files are entered at the end of this list. For example:
add_action('admin_bar_menu', 'my_adminbar_template_monitor', -5);
priority
-5
make shure it loads first. The key is to callget_included_files()
at the right moment, otherwise some array-popping needed!To break this up:
You can not collect all included template files without PHP backtrace. Superglobals inside
template_include
wont collect them all. The other way is to "place a marker" in each template file, but if you need to interact with the files first, you hazzle with time and the whole idea.1) We need to check inside all the files that have been used by current Wordpress request. And they are many! Dont be surprised if you are using 300 files before even your functions.php is registered.
$included_files = str_replace('\\', '/', get_included_files());
We are using the PHP native get_included_files(), converting backslashes to forward slashes to match most of Wordpress returning paths.
2) We are cutting that array from where the template-loader.php is registered. After that, the populated get_included_files() should only have template files populated.
/* 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) Shorten down the results, we dont need the path until theme folder or plugin folder, as templates in use, can be mixed from plugins, theme or child theme folders.
$replacement = $path.'wp-content/'; $output = str_replace($replacement, '', $output);
4) Finally, convert from array to a nice HTML list
$output = '<ul><li>'.implode('</li><li>', $output).'</li></ul>';
A last modification might be needed in part3) -replacement, if you dont want required includes by plugins. They might call
class-files
late, and "intercept" during the template output processing.However, I found it reasonable to leave them visible, as the idea is to track whats been loaded, even if it is not a "template" that rendering output in this stage.
-
- 2011-12-25
Dereinfachste Weg,denichgefunden habe,besteht darin,die WordPress-Funktionin das Body-Tag aufzunehmen.Jenachdem,welche Seite Sie anzeigen (Startseitefür die Vorderseite,Seitefür Seite usw.),werdenmehrere Klassen hinzugefügt.
Überprüfen Siees hier: http://codex.wordpress.org/Function_Reference/body_class
Außerdemistes hilfreich,Elemente auf diesen Seitenmit CSS auszurichten.
Das Kennenlernen der Vorlagenhierarchie (http://codex.wordpress.org/Template_Hierarchy),wie David Rerwähnt hat,istebenfallseine gute Idee.
Easiest way I've found is to include the WordPress function on the body tag. It'll add several classes depending on which page you're viewing (home for the front, page for page, etc).
Check it out here: http://codex.wordpress.org/Function_Reference/body_class
Plus it's helpful for targeting elements with CSS on those pages.
Getting to know the Template Hierarchy (http://codex.wordpress.org/Template_Hierarchy) as David R mentioned is also a good idea.
-
- 2013-01-29
Speziellfür diesen Zweckgibt esein weiteres Bare-Bones-Plugin.Ichneige dazu,die Debug-Leiste zuinstallieren,da diese anderen Funktionennützlich aussehen,aber dieseistgrundlegender und speziellfür diesen Zweck: http://wordpress.org/extend/plugins/what-the-file/
There's another more bare-bones plugin specifically for this purpose. I'm leaning towards installing the debug bar, because those other features look useful, but this one is more basic and specifically for this purpose: http://wordpress.org/extend/plugins/what-the-file/
-
- 2011-12-24
Eine sehreinfache Sache,dieichmache,ist das Einfügeneines HTML-Kommentars,der die Vorlagendateiidentifiziert,in jede relevante Datei des Themas,z. B. obenin index.php,dasich habe
<!-- index -->
und oben auf der Titelseite.php
<!-- front -->
Dafürmuss das Themanatürlichgeändert werden.Ich vermute,Sie könnten der Dateifooter.php oder header.phpeine benutzerdefinierte Funktion hinzufügen,die Ihnen sagt,welche Datei verwendet wurde.Die obige Methode und das Referenzdiagramm http://codex.wordpress.org/Template_Hierarchy tendieren dazuverwenden.
One very simple thing I do is to insert an HTML comment identifying the template file in each relevant file of the theme, eg at the top of index.php I have
<!-- index -->
and at the top of front-page.php
<!-- front -->
But obviously that requires modifying the theme. I suspect you could add a custom function in the footer.php file or header.php which would tell you what file was being used. The above method and the reference chart http://codex.wordpress.org/Template_Hierarchy are what I tend to use.
-
- 2011-12-26
Esgibt ein Pluginnamens Theme Check ,dasgenau diestut.Es zeigt den Namen der aktuellen Vorlagendatei an,die als HTML-Kommentar verwendet wird.
There is a plugin named Theme Check which does exactly this. It displays the name of the current template file in use as a HTML comment.
Wenn Sieein WordPress-Thema aktivieren,istesimmermühsam herauszufinden,in welche Datei Siegehenmüssen,um Änderungen vorzunehmen. Irgendeine Idee,wieman Dinge vereinfacht?
In Anbetracht der Funktionalität vonget_template_partist diesjedochmöglicherweise unmöglich.Was sagst du?