WordPress
template_include
수색…
매개 변수
매개 변수 | 설명 |
---|---|
$template | 하나의 매개 변수를 필터에 전달하면 $template 은 활성 자식 테마 또는 부모 테마에있는 해당 게시물 유형에 대한 해당 파일의 현재 경로입니다 (하위 또는 하위 테마의 하위 테마에 순위가 낮은 템플릿이없는 경우 wordpress template hierarchy 참조). 자세한 사항은). |
비고
수정하지 않아도 $template
반환해야합니다. 이것이 당신을 혼란스럽게한다면 코드에서 apply_filter()
가 사용 된 예제를 apply_filter()
나중에 사용하기 위해 여기에 변수를 설정해서는 안되며, 더 좋은 방법이 있습니다.
이 필터의 유용한 프로그램 흐름은 다음과 같습니다.
- check
$template
에는 사용자 정의 게시물 유형 이름 -> 템플릿 계층 구조가 포함되어 있습니다! - 그렇지 않다면 적절한 파일을 찾기 위해 플러그인을 검색하십시오.> 파일 폴더를 검색하는 것이 아니라 특정 파일을 가리키는 것이 좋습니다. 더 효율적입니다. 그러나 완전히 개발자에게 달려 있습니다.
- 템플릿을 반환하십시오.
간단한 예
이 필터는 매우 유용합니다. 개발자를위한 공통적 인 문제 중 하나는 개발중인 플러그인에 템플릿을 포함시키는 방법입니다.
필터는 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