is_page_template ()은 무엇과 비교됩니까?


10

관통 찾고 워드 프레스 문서 , 그 말씀 is_page_template()하나가 제공되는 경우 "템플릿 이름"에 대해 비교합니다.

나는에 저장된 템플릿이 page-homepage.php전화를 Homepage:

/*
 * Template Name: Homepage
 * Description: The template for displaying the homepage
 */

그리고 해당 템플릿을 사용할 때 functions.php에서 실행할 코드가 있습니다.

if (is_page_template('Homepage')) { 
   ...

그러나 해당 템플릿을 사용하는 페이지에있을 때 트리거되지 않습니다.

Wordpress가 실행하는 코드를 보면 is_page_template()실제로 템플릿 이름이 아닌 문서 이름을 확인하는 것 같습니다.

function is_page_template( $template = '' ) {

    $page_template = get_page_template_slug( get_queried_object_id() );

    if ( $template == $page_template )
        return true;

내 경우에 그 것 $page_template입니다 page-homepage.php...하지 템플릿 이름, 문서에서 알처럼 -?

내가 뭔가 잘못하고 있습니까?


문서에 관한 좋은 관찰.
birgire

답변:


15

귀하의 상태는 다음과 같이 작성되어야합니다 :

if (is_page_template('path/file.php')) { 
    // Do stuff
}

혼란은 두 가지의 결과라고 생각합니다.

  1. 문서는 "이름"을 모호하게 참조합니다. "파일 이름"을 지정하면 설명서가 훨씬 더 명확 해집니다.
  2. 코드 는 핵심 기능을 is_page_template()보여줍니다 get_page_template_slug(). 이 함수는 실제로 템플릿 슬러그가 아닌 파일 이름을 반환합니다. https://codex.wordpress.org/Function_Reference/get_page_template_slug

is_page_template()함수 의 인수를 지정할 때 (위의 예에서와 같이) 파일 경로는 테마 루트를 기준으로합니다.

이 기능은 루프 내에서 작동하지 않습니다.


2
어떤 경로 가 여기에 해당 하는지 설명하는 것이 좋을 것 입니다.
birgire

1
혼동 될 수있는 이유에 대한 추가 설명 및 세부 사항을 추가했습니다.
jdm2112

3
와. 혼란의 두 배의 whammy. 문서가 약간 모호하다는 것을 이해할 수는 있지만 (실제로 수정해야하지만) get_page_template_slug()실제로 슬러그를 반환하지 않는 것에 놀랐습니다 !
Django Reinhardt

동의했다. 코드를 작성할 때 "이름 지정"이 가장 어려운 것 중 하나라는 개념을 추가로 지원합니다.
jdm2112

이 답변에는 "모범 사례"솔루션이 포함되어 있습니다. 그러나 페이지가 "기본 템플릿"을 사용하고 있지만 실제로는 페이지 템플릿 인 경우이 답변이 도움이 될 수 있습니다.
rinogo

7

가장 좋은 말은 FILE 이름을 확인하고 귀하의 경우 page-homepage.php 일 것입니다. 그래서:

if (is_page_template('page-homepage.php')) { 
  ...

고려해야 할 다른 사항은 템플릿 파일이 실제로 테마 내의 다른 폴더에 저장되어 있는지입니다. 더 읽어보기

한 가지 더, Template Name: Homepage페이지 또는 게시물을 만들 때 템플릿을 식별하는 데 일반적으로 사용되는 것입니다.


다른 대답이 지적한 것처럼-경로도 고려합니다. page-templates/page-homepage.php테마 루트의 템플릿과 다릅니다.
Howdy_McGee

흥미롭고 내가 알지 못하는 것, 단지 확인하기 위해 테마 또는 하위 테마 폴더 외부에 페이지 템플리트를 저장할 수 있습니까?
Malisa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.