현재 페이지를 제공하는 템플릿 페이지를 어떻게 알 수 있습니까?
-
-
html을 검사하고 식별 된 태그 또는 고유 한 것을 찾습니다.I inspect the html and find an identified tag or something unique.
- 1
- 2011-12-27
- Naoise Golden
-
소스 코드를보고 어떤 템플릿이 사용되는지 알려주는 본문 클래스를 찾으십시오.또한i.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
-
[현재 템플릿 파일 이름 가져 오기] (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
옵션을 사용 설정해야합니다. 이러한 옵션은 기본적으로 비활성화 상태입니다.하지만 변경하기 전에 유의해야 할 몇 가지 사항이 있습니다.
- 웹 사이트가 많은 트래픽을 처리하지 않는 한 프로덕션 환경에서 수행하지 마십시오.
- 디버깅을 마치면 웹 사이트의 옵션 (특히 성능에 영향을 미치기 때문에 wp_savequeries 옵션)을 비활성화 해야합니다.
변경하려면 :
- ftp 클라이언트를 통해
wp_config.php
파일을 엽니 다. -
wp_debug
옵션을 검색합니다.define( 'WP_DEBUG', true );
로 편집하십시오. 줄이 없으면 파일에 추가합니다. - 마찬가지로,파일에
define( 'SAVEQUERIES', true );
줄을 편집하거나 추가합니다. - 저장합니다. 디버그 할 준비가되었습니다.
추가 정보 : 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-디버그 바 플러그인은`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. :)
-
이것은goto 대답이며 받아 들여야합니다.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 목록 ( 플러그인,하위 테마 및/또는 상위 테마 조합의 모든 템플릿 부분 포함 ),모두 한 줄의 코드로 :
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
내의 Superglobals 는 모두 수집하지 않습니다 . 다른 방법은 각 템플릿 파일에 "마커를 배치"하는 것이지만 먼저 파일과 상호 작용해야하는 경우 시간과 전체 아이디어에 혼란을 겪습니다.1) 현재 Wordpress 요청에서 사용 된 모든 파일 내부를 확인해야합니다. 그리고 그들은 많다!functions.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이 언급 한대로 Template Hierarchy (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
이 목적을 위해 특별히 더 베어 본 플러그인이 있습니다.다른 기능이 유용 해 보이기 때문에 디버그 표시 줄을 설치하는쪽으로 기울고 있지만이 기능은이 목적을 위해 더 기본적이고 구체적입니다. 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
내가하는 한 가지 아주 간단한 일은 테마의 각 관련 파일에 템플릿 파일을 식별하는 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 기능을 고려하면 불가능할 수 있습니다.당신은 무엇을 말합니까?