현재 페이지를 제공하는 템플릿 페이지를 어떻게 알 수 있습니까?


54

워드 프레스 테마를 활성화하면, 어떤 파일을 변경해야하는지 알아내는 것이 항상 번거 롭습니다. 일을 단순화하는 방법에 대한 아이디어가 있습니까?

그러나 get_template_part 기능을 고려하면 불가능할 수도 있습니다. 당신은 무엇을 말합니까?


1
HTML을 검사하고 식별 된 태그 또는 고유 한 것을 찾습니다.
Naoise Golden

1
소스 코드를보고 어떤 템플릿이 사용되는지 알려주는 본문 클래스를 찾으십시오. 또한 당신에게 ID를 제공합니다
브래드 달튼


@ 브래드 달턴 +1. 특히 플러그인을 설치하거나 목표를 달성하기 위해 함수를 작성할 수없는 경우.
Subrata Sarkar

답변:


34

에 연결 template_include하고 테마로 설정된 템플릿을 기록하도록 전역을 설정 한 다음 해당 값을 바닥 글이나 머리글로 다시 읽어 특정보기에 어떤 템플릿이 호출되는지 확인합니다.

현재 템플릿 파일의 이름 가져 오기 에서이 필터 후크에 대해 이야기 했지만 해당 코드사본을 가져 와서 테마 functions.php파일 로 복사 하십시오.

그런 다음 열 테마의 header.phpfooter.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() ); 
?>

이제 방문자로부터 정보를 멀리 유지하면서 어떤 템플릿을 사용하고있는 조회수를 추적 할 수 있습니다.


1
이 답변에 문제가 있거나 누군가가이 답변을 개선하기 위해 수행 할 수있는 작업에 대한 의견을 제시 할 수있는 경우 여기에 의견을 남기고 더 나은 방법에 대한 의견과 아이디어를 공유하십시오.
t31os

1
그것은 작동하지 않았다, 그것은 "정의되지 않은 기능"이라고 말한다
Lucas Bustamante

1
@LucasB 여기도 마찬가지입니다. 제가받은 오류입니다
Lincoln Bergeson

이것은이어야한다get_page_template
Blazemonger

40

글쎄, 현재 페이지를 생성하는 데 사용 된 템플릿 파일을 확인하는 것이라면 코드로 손을 더럽힐 필요가 없습니다.)

이 편리한 플러그인 인 Debug Bar가 있습니다. 그것은 당신을 포함한 많은 상황에서 훌륭한 도우미입니다. 당신은 확실히 그것을 확인해야합니다-저와 다른 많은 사람들에게 그것은 모든 WP 개발을위한 필수 동반자입니다.

사랑에 빠질 수있는 스크린 샷을 첨부했습니다 ...

여기에 이미지 설명을 입력하십시오

디버그 표시 줄이 작동 하게하려면 wp_debugwp_savequeries옵션 을 활성화해야합니다 . 이 옵션은 기본적으로 비활성화 상태입니다.

그래도 변경하기 전에 명심해야 할 몇 가지 사항이 있습니다.

  • 웹 사이트가 많은 트래픽을 수용하지 않는 한 프로덕션 환경에서 수행하지 마십시오.
  • 디버깅을 마치면 웹 사이트의 옵션 (특히 성능에 영향을 미치므로 wp_savequeries 옵션) 을 비활성화 하십시오.

변경하려면 다음을 수행하십시오.

  1. wp_config.phpftp 클라이언트를 통해 파일을 엽니 다 .
  2. wp_debug옵션을 검색하십시오 . 로 수정하십시오 define( 'WP_DEBUG', true );. 줄이 없으면 파일에 추가하십시오.
  3. 마찬가지로 define( 'SAVEQUERIES', true );파일을 편집하거나 줄 을 추가 하십시오.
  4. 저장하기. 디버깅 할 준비가되었습니다.

더 많은 정보 : Codex


2
@justCallMeBiru는 - 디버그 바 플러그인은하지 않습니다 필요 WP_DEBUG 하고 SAVEQUERIES이되지만, 강화 된 그들에 의해.
Pat J

3
단 하나의 정보에 대해서만 이러한 플러그인을 실행하면 많은 오버 헤드 imho가 생성되므로 내 대답으로 제안하지 않은 이유입니다. 즉, 사람들은 분명히이 대답을 선호하지만 왜 그런지 알고 싶습니다.
t31os

23

최고 관리자에게만 현재 템플릿을 표시하는이 편리한 기능을 사용합니다.

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

희망이 도움이됩니다. :)


2
이것은 goto 답변이며 수락해야합니다.
하이브리드 웹 개발자

12

각 관련 템플리트 파일에서 get_header 행 바로 뒤에 다음 코드를 추가하십시오.

<!-- <?php echo basename( __FILE__ ); ?> -->

브라우저> 소스보기에서 템플릿 이름이 HTML 코드에 주석으로 표시됩니다 (예 :

<!-- page.php -->

이것을 어디에나 추가하는 것은 너무 많은 노력입니다
Adal

4

내가 찾은 가장 쉬운 방법은 bodyPress에 WordPress 기능을 포함시키는 것입니다. 보고있는 페이지 (전면의 홈, 페이지의 페이지 등)에 따라 여러 클래스가 추가됩니다.

여기에서 확인하십시오 : http://codex.wordpress.org/Function_Reference/body_class

또한 해당 페이지에서 CSS를 사용하여 요소를 타겟팅하는 데 도움이됩니다.

David R이 언급 한 템플릿 계층 구조 (http://codex.wordpress.org/Template_Hierarchy)를 아는 것도 좋은 생각입니다.



3

내가하는 매우 간단한 일은 테마의 각 관련 파일에 템플릿 파일을 식별하는 HTML 주석을 삽입하는 것입니다 (예 : index.php의 상단에 있음)

<!-- index -->

그리고 front-page.php의 상단에

<!-- front -->

그러나 분명히 테마를 수정해야합니다. footer.php 파일 또는 header.php에 사용자 정의 함수를 추가하여 어떤 파일이 사용되고 있는지 알 수 있다고 생각합니다. 위의 방법과 참조 차트 http://codex.wordpress.org/Template_Hierarchy 는 내가 사용하는 경향이 있습니다.


3

정확하게 수행하는 Theme Check 라는 플러그인 이 있습니다. HTML 주석으로 사용중인 현재 템플릿 파일의 이름을 표시합니다.


3

여기 있습니다 :

플러그인, 하위 테마 및 / 또는 상위 테마 조합의 모든 템플릿 부분을 포함 하여 현재 랜딩 페이지에 사용중인 모든 템플릿 파일이 포함 된 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하면에서 휴식 할 필요가 무엇 filname : 코드 줄에. 자주:class-wp-admin-bar.php

관리자 표시 줄에서이 옵션이 필요한 경우 올바른 목록 (가장 빠른 시간) 을 사용 하여이 목록 의 끝에 파일이 입력되지 않도록 하십시오. 예를 들면 다음과 같습니다.

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

우선 -5로드해야합니다. 열쇠는 get_included_files()적절한 순간 에 전화 하는 것입니다. 그렇지 않으면 일부 어레이 팝핑이 필요합니다!

이것을 해체하려면 :

당신은 할 수없는 PHP 역 추적없이 포함 된 모든 템플릿 파일을 수집합니다. 내부의 슈퍼 글로벌 template_include 은 그것들을 모두 모으지 않을 것 입니다. 다른 방법은 각 템플릿 파일에 "마커를 배치"하는 것입니다. 그러나 먼저 파일과 상호 작용해야하는 경우 시간과 전체 아이디어로 혼란을 겪습니다.

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)에 -replacement , 당신이 경우 그나마 원하는 요구가 포함 플러그인에 의해. class-files템플릿 출력 처리 중에 늦게 호출 하고 "절편" 할 수 있습니다 .

그러나, 이 단계에서 출력을 렌더링하는 "템플릿"이 아니더라도 로드 된 내용을 추적하는 것이기 때문에 그것들을 보이게하는 것이 합리적이라는 것을 알았습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.