現在のページを提供しているテンプレートページをどのように見つけますか?
-
-
私はhtmlを調べて、識別されたタグまたは何かユニークなものを見つけます.I inspect the html and find an identified tag or something unique.
- 1
- 2011-12-27
- Naoise Golden
-
ソースコードを表示し、使用されているテンプレートを示すボディクラスを探します.また、あなたにIDを与えます.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
-
[現在のテンプレートファイルの名前を取得](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.特に、プラグインをインストールしたり、目標を達成するための関数を記述したりすることが許可されていない場合.@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 回答
- 投票
-
- 2011-12-26
template_include
にフックし、テーマによって設定されたテンプレートを記録するようにグローバルを設定し、その値をフッターまたはヘッダーに読み戻して、特定のビューに対して呼び出されているテンプレートを確認します.このフィルターフックについては、以前
現在の名前を取得するで説明しましたテンプレートファイルですが、そのコードのコピーを入手して、テーマの functions.php
ファイル.次に、テーマの
header.php
またはfooter.php
(または任意の場所)を開き、次のようなものを使用して現在のテンプレートを印刷します.<div><strong>Current template:</strong> <?php get_current_template( true ); ?></div>
これを本番サイトで使用し、その情報を管理者以外のユーザーから遠ざけたい場合は、条件付きロジックを少し追加してください.
<?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() ); ?>
これで、どのビューがどのテンプレートを使用しているかを追跡しながら、その情報を訪問者から遠ざけることができます.
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.
-
この回答に何か問題がある場合、またはこの回答を改善するために何ができるかについて誰かがコメントを提供できる場合は、ここにコメントをドロップして、それを改善する方法についての考えやアイデアを共有してください.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
-
それはうまくいきませんでした、それは「未定義の機能」と言いますIt didn't work bro, it says "Undefined function"
- 1
- 2016-04-27
- Lucas Bustamante
-
@LucasBはここでも同じです、それは私が得たエラーです@LucasB same here, that's the error I got
- 1
- 2017-01-07
- Lincoln Bergeson
-
これは[`get_page_template`](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`は関数ではなく、`get_page_template`は私には何も出力しません(woocommerceページ).`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
現在のページを生成するためにどのテンプレートファイルが使用されているかを確認するだけであれば、コードで手を汚す必要はありません;)
デバッグバーと呼ばれるこの便利なプラグインがあります. それはあなたを含む多くの状況で素晴らしいヘルパーです.ぜひチェックしてみてください.私や他の多くの人にとって、これはWP開発に欠かせないコンパニオンです.恋に落ちる可能性のあるスクリーンショットを添付しました...
デバッグバーを機能させるには、
wp_debug
およびwp_savequeries
オプションを有効にする必要があります.これらのオプションは、デフォルトでは無効な状態です.ただし、変更を加える前に、留意すべき点がいくつかあります.
- Webサイトが大量のトラフィックに対応していない場合を除いて、本番環境では実行しないでください.
- デバッグが終了したら、Webサイトのオプション(特にパフォーマンスに影響するため、wp_savequeriesオプション)を無効にしてください.
変更するには:
- ftpクライアントを介して
wp_config.php
ファイルを開きます. -
wp_debug
オプションを検索します.define( 'WP_DEBUG', true );
に編集します.行が存在しない場合は、ファイルに追加します. - 同様に、
define( 'SAVEQUERIES', true );
という行を編集するかファイルに追加します. - 保存します.デバッグする準備ができました.
詳細:
コーデックス 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-デバッグバープラグインは `WP_DEBUG`と` SAVEQUERIES`を*必要としません*が、それらによって*強化*されています.@justCallMeBiru -- the Debug Bar plugin doesn't *require* `WP_DEBUG` and `SAVEQUERIES`, though it is *enhanced* by them.
- 2
- 2014-01-15
- Pat J
-
このようなプラグインを実行すると、ほんの少しの情報で多くのオーバーヘッドが発生するため、私自身の回答でそれを提案しなかったのはそのためです.そうは言っても、明らかに人々はこの答えを好むのですが、なぜか知りたいのですが.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
現在のテンプレートをスーパー管理者のみに表示するこの便利な関数を使用します:
function show_template() { if( is_super_admin() ){ global $template; print_r($template); } } add_action('wp_footer', 'show_template');
お役に立てば幸いです.:)
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. :)
-
これは後藤の答えです、受け入れられるべきです.This is the goto answer, should be accepted.
- 3
- 2018-03-13
- Hybrid Web Dev
-
私もこれを使用していますが、「インクルード」が使用されている表示がなく、トップレベルのページしか表示されません.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
関連する各テンプレートファイルのget_header行の直後に次のコードを追加します.
<!-- <?php echo basename( __FILE__ ); ?> -->
ブラウザで>ソースを表示すると、テンプレート名がHTMLコードにコメントとして表示されます.例:
<!-- 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 -->
-
これをどこにでも追加するのは大変な努力ですit's too much effort to add this everywhere
- 0
- 2019-02-18
- Adal
-
ははは、各ファイルにラベルを付ける場合は、実際のファイル名でラベルを付けるだけで、なぜこれを気にする必要がありますか?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
-
@Aurovrataそれはずっと前のことです.より良い解決策があります.しかし、フォルダー内のすべてのファイルの先頭にコードを挿入する簡単なスクリプトがあったので、実際の名前をハードコーディングする必要はありません.1〜2秒で完了します.@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
-
けっこうだ、 :)fair enough, :)
- 0
- 2020-05-21
- Aurovrata
-
- 2017-09-15
どうぞ:
現在のランディングページで使用されているすべてのテンプレートファイルを含むHTMLリスト.プラグイン、子テーマ、親テーマの組み合わせのすべてのテンプレートパーツを含む、すべてを1行のコードで:
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>';
サーバーがどのパスでもダブルスラッシュを返さないことを確認する必要がある場合があります.これは、footer.phpのように、すべてのテンプレートファイルが実際に使用された後、管理バーがレンダリングされる前に配置することを忘れないでください.
admin-bar stuff
パスが上部またはその他のファイルに表示されている場合は、このコード行のファイル名template-loader.php
を次のように変更します.ブレークする必要のあるファイル名.多くの場合:class-wp-admin-bar.php
管理バーでこれが必要な場合は、適切な優先度を使用(最も早い)このリストの最後にファイルが入力されていないことを確認してください.例:
add_action('admin_bar_menu', 'my_adminbar_template_monitor', -5);
priority
-5
は、最初にロードすることを確認します.重要なのは、適切なタイミングでget_included_files()
を呼び出すことです.そうしないと、配列をポップする必要があります.これを分割するには:
PHPバックトレースなしで含まれているすべてのテンプレートファイルを収集することはできません.
template_include
内のスーパーグローバルはすべてを収集しません.もう1つの方法は、各テンプレートファイルに「マーカーを配置」することですが、最初にファイルを操作する必要がある場合は、時間とアイデア全体に戸惑います.1)現在のWordpressリクエストで使用されているすべてのファイルの内部を確認する必要があります.そして、彼らはたくさんいます!関数.phpが登録される前に300個のファイルを使用していても、驚かないでください.
$included_files = str_replace('\\', '/', get_included_files());
PHPネイティブのget_included_files()を使用して、バックスラッシュをフォワードスラッシュに変換し、Wordpressのほとんどの戻りパスに一致させます.
2)template-loader.phpが登録されている場所からその配列を切り取ります.その後、入力されたget_included_files()には、テンプレートファイルのみが入力されます.
/* 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)結果を短くします.テーマフォルダまたはプラグインフォルダがテンプレートとして使用され、混在できるようになるまでパスは必要ありませんプラグイン、テーマ、または子テーマフォルダから.
$replacement = $path.'wp-content/'; $output = str_replace($replacement, '', $output);
4)最後に、配列から素敵なHTMLリストに変換します
$output = '<ul><li>'.implode('</li><li>', $output).'</li></ul>';
最後の変更が必要になる場合がありますパート3) -交換、必要なインクルードが必要な場合は プラグイン.彼らは
class-files
を遅く呼び出し、テンプレート出力処理中に「インターセプト」する可能性があります.ただし、この段階で出力をレンダリングするのは「テンプレート」ではない場合でも、ロードされたものを追跡することであるので、それらを表示したままにしておくのが妥当だと思いました.
>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
私が見つけた最も簡単な方法は、bodyタグにWordPress関数を含めることです.表示しているページ(フロントのホーム、ページのページなど)に応じて、いくつかのクラスが追加されます.
ここで確認してください: http://codex.wordpress.org/Function_Reference/body_class
さらに、それらのページでCSSを使用して要素をターゲティングするのに役立ちます.
David Rが述べたように、テンプレート階層(http://codex.wordpress.org/Template_Hierarchy)を理解することも良い考えです.
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
この目的のために特別に必要なプラグインがもう1つあります.これらの他の機能は便利に見えるので、私はデバッグバーのインストールに傾倒していますが、これはより基本的で、特にこの目的のためのものです. 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
私が行う非常に簡単なことの1つは、テンプレートファイルを識別するHTMLコメントを、テーマの関連する各ファイル(たとえば、私が持っているindex.phpの上部)に挿入することです.
<!-- index -->
およびfront-page.phpの上部
<!-- front -->
しかし、明らかにそれはテーマを変更する必要があります.使用されているファイルを示すカスタム関数をfooter.phpファイルまたはheader.phpに追加できると思います.上記の方法とリファレンスチャート
http://codex.wordpress.org/Template_Hierarchy は、私がよく使う方法です.使用します. 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
これを正確に実行する
テーマチェックという名前のプラグインがあります.使用中の現在のテンプレートファイルの名前がHTMLコメントとして表示されます. 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.
ワードプレスのテーマをアクティブにすると、変更するファイルを見つけるのは常に面倒です. 物事を単純化する方法はありますか?
しかし一方で、get_template_part機能を考慮すると、これは不可能な場合があります.何て言うの?