수색…


매개 변수

매개 변수 설명
$template 하나의 매개 변수를 필터에 전달하면 $template 은 활성 자식 테마 또는 부모 테마에있는 해당 게시물 유형에 대한 해당 파일의 현재 경로입니다 (하위 또는 하위 테마의 하위 테마에 순위가 낮은 템플릿이없는 경우 wordpress template hierarchy 참조). 자세한 사항은).

비고

수정하지 않아도 $template 반환해야합니다. 이것이 당신을 혼란스럽게한다면 코드에서 apply_filter() 가 사용 된 예제를 apply_filter()

나중에 사용하기 위해 여기에 변수를 설정해서는 안되며, 더 좋은 방법이 있습니다.

이 필터의 유용한 프로그램 흐름은 다음과 같습니다.

  1. check $template 에는 사용자 정의 게시물 유형 이름 -> 템플릿 계층 구조가 포함되어 있습니다!
  2. 그렇지 않다면 적절한 파일을 찾기 위해 플러그인을 검색하십시오.> 파일 폴더를 검색하는 것이 아니라 특정 파일을 가리키는 것이 좋습니다. 더 효율적입니다. 그러나 완전히 개발자에게 달려 있습니다.
  3. 템플릿을 반환하십시오.

간단한 예

이 필터는 매우 유용합니다. 개발자를위한 공통적 인 문제 중 하나는 개발중인 플러그인에 템플릿을 포함시키는 방법입니다.

필터는 WordPress가 wp 계층 구조를 사용하여 활성 하위 / 상위 테마에서 적절한 템플릿을 찾은 직후에 적용됩니다.

템플리트 경로를 수정할 때를 정의해야합니다. 아래 예제에서 코드는 현재 페이지가 사용자 정의 게시 유형 cpt 의 단일보기 cpt 합니다.

시작하기에 충분한 간단한 예제!

add_filter('template_include', 'custom_function');


function custom_function($template){
    
    //change a single post template...
    
    if( is_singular('cpt')  ){
         $template= 'path/to/another/template_file';
    }
      
    
    return $template;

}

추가 예제

add_filter('template_include', 'custom_function');


function custom_function($template){
    
    /*
    *     This example is a little more advanced. 
    *    It will check to see if $template contains our post-type in the path.
    *    If it does, the theme contains a high level template e.g. single-cpt.php
    *    If not we look in the plugin parent folder for the file. e.g. single-cpt.php
    */
    
  
    //check to see if the post type is in the filename (high priority file)
    //return template if it is!
    
    global $post;
   
    if( strpos($template, 'single-'.$post->post_type.'php' ) !== false && strpos($template, 'archive-'.$post->post_type.'php' ) !== false ){
        return $template;
    }
    
    $plugin_path = 'var/etc/wp-content/plugins/plugin'; //include own logic here...
    
    if( is_singular($post->post_type) && file_exists($plugin_path.'/single-'.$post->post_type.'.php')   ){
         $template= $plugin_path.'/single-'.$post->post_type.'.php';
    } elseif ( is_archive($post->post_type) && file_exists($plugin_path.'/archive-'.$post->post_type.'.php') ) {
         $template= $plugin_path.'/archive-'.$post->post_type.'.php';
    } 
      
    return $template;
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow