2014-05-19 1 views
2

wordpress을 이전에 설치 한 플랫폼과 통합하려고합니다.Wordpress : 템플릿 페이지는 어디에서 호출됩니까?

내가 원하는대로 대부분의 시스템을 편집 할 수 있었지만 template file을로드하기 전에 wordpress이 수행하는 작업에 개입하는 방법을 파악할 수 없습니다.

내가 추가하고 싶은 것은 페이지를로드 할 때 이전의 CMS를로드하거나 보통 wordpress을로드하는 간단한 조건문입니다.

그러나 어떤 기능이나 파일이 테마의 구성 요소를로드하는지 이해할 수 없었습니다.

wp은 다른 유형의 페이지 (소식, 카테고리 페이지 등)에 대해 다른 files을로드하는 템플릿 계층 구조를 사용합니다.

하지만 function은 무엇을 선택하고 실제로 파일을로드합니까?

답변

3

실제로 수행하려고 시도하는 내용이 명확하지 않지만 /wp-includes/template-loader.php가 특히 중요 할 것입니다.

템플릿을로드하는 파일입니다. 그냥 분명히하기 위해이 파일을 수정하라는 말은 아니에요. 나는 단지 마법이 일어나는 곳을 지적하고 있습니다.

로드되면 즉시 template_redirect 액션이 실행됩니다. 로직을 수행하고 싶다면 여기서 리디렉션하십시오.

$template = false; 
if  (is_404()   && $template = get_404_template()   ) : 
elseif (is_search()   && $template = get_search_template()  ) : 
elseif (is_front_page()  && $template = get_front_page_template() ) : 
elseif (is_home()   && $template = get_home_template()   ) : 
elseif (is_post_type_archive() && $template = get_post_type_archive_template()) : 
elseif (is_tax()   && $template = get_taxonomy_template()  ) : 
elseif (is_attachment()  && $template = get_attachment_template() ) : 
    remove_filter('the_content', 'prepend_attachment'); 
elseif (is_single()   && $template = get_single_template()  ) : 
elseif (is_page()   && $template = get_page_template()   ) : 
elseif (is_category()  && $template = get_category_template()  ) : 
elseif (is_tag()   && $template = get_tag_template()   ) : 
elseif (is_author()   && $template = get_author_template()  ) : 
elseif (is_date()   && $template = get_date_template()   ) : 
elseif (is_archive()  && $template = get_archive_template()  ) : 
elseif (is_comments_popup() && $template = get_comments_popup_template()) : 
elseif (is_paged()   && $template = get_paged_template()   ) : 
else : 
    $template = get_index_template(); 
endif; 
/** 
* Filter the path of the current template before including it. 
* 
* @since 3.0.0 
* 
* @param string $template The path of the template to include. 
*/ 
if ($template = apply_filters('template_include', $template)) 
    include($template); 
return; 
: 템플릿 파일이 결정 조건문가이 파일의 맨 아래에

function wpse_template_redirect() { 
    if (condition_a() == condition_b()) { 
     wp_redirect('url-to-redirect-to'); 
     exit; 
    } 
} 
add_action('template_redirect', 'wpse_template_redirect'); 

: 여기 테마의 functions.php에 갈 것이라고 예입니다

관련 문제