폴더와 함께 get_template_part ()를 사용하는 방법이 있습니까?


26

폴더와 함께 get_template_part ()를 사용하는 방법이 있는지 궁금합니다. 재사용 가능한 모든 요소를 ​​별도의 파일에 저장하기 때문에 기본 폴더에 많은 파일이 있습니다. 그런 다음 폴더에 넣고 싶습니다.

Codex에는 이에 대한 정보가 없습니다. http://codex.wordpress.org/Function_Reference/get_template_part

답변:


40

당신이 할 수있는 사실, 난라는 내 테마 디렉토리에 폴더가 /partials/나는 등의 파일이있는 폴더 점에서에 latest-articles.php, latest-news.php그리고 latest-statements.php내가 사용하여 이러한 파일을로드 get_template_part()처럼을 :

get_template_part('partials/latest', 'news');

get_template_part('partials/latest', 'articles');

get_template_part('partials/latest', 'statements');

.php파일 이름에서 파일 을 생략하는 것을 잊지 마십시오 .


감사! 너무 단순해서 내가 이것을 발견하지 못한 것은 부끄러운 일입니다. Codex가 언급하지 않았기 때문에 이것이 불가능하다는 것을 확신했습니다. 이 질문은 더 흥미로운 답변을 가져 왔지만 이것은 가장 간단하므로 아마도 사람을 평범하게하는 가장 유용한 질문 일 것입니다 :) (녹색 눈금으로 표시하십시오).
Paul

1
다행히 다음 사람이 같은 문제를 일으키지 않도록 코덱을 편집 할 수 있습니다. :-)
Dalton

@Sebastien 실제로 예를 들면 다음과 같습니다. <?php get_template_part('partials/file'); ?>
HauntedSmores

5

난 두려워하지. 코덱스에서 알고 싶지 않은 경우 소스 링크를 따라 가고 코드를 직접 살펴보고 관리하십시오.

모양이 있고 get_template_part 함수는 다음과 같이 정의됩니다.

function get_template_part( $slug, $name = null ) {
    do_action( "get_template_part_{$slug}", $slug, $name );

    $templates = array();
    if ( isset($name) )
        $templates[] = "{$slug}-{$name}.php";

    $templates[] = "{$slug}.php";

    locate_template($templates, true, false);
}

이것으로부터 get_template_part 함수는 의도 된 PHP 파일 이름을 생성하고 locate_template 함수를 호출합니다. 이것은 유용하지 않으므로 locate_template 함수를 살펴 보았습니다.

function locate_template($template_names, $load = false, $require_once = true ) {
    $located = '';
    foreach ( (array) $template_names as $template_name ) {
        if ( !$template_name )
            continue;
        if ( file_exists(STYLESHEETPATH . '/' . $template_name)) {
            $located = STYLESHEETPATH . '/' . $template_name;
            break;
        } else if ( file_exists(TEMPLATEPATH . '/' . $template_name) ) {
            $located = TEMPLATEPATH . '/' . $template_name;
            break;
        }
    }

    if ( $load && '' != $located )
        load_template( $located, $require_once );

    return $located;
}

get_template_part에서 호출 된 PHP 파일에 대한 템플릿 검색 위치를 가져옵니다. 그러나 코드에서 직접 locate_template호출 할 수 있습니다 . 그리고 이것은 유용합니다.

get_template_part ( 'loop-sigle.php') 함수 대신이 코드를 사용해보십시오 (파일은 테마의 mydir에 있습니다).

locate_template( 'mydir/loop-single.php', true, true );

재미있는 지름길, 로딩 순서 나 파일 내용에 부정적인 결과가 있는지 궁금합니다.
lowtechsun

2

기능의 메모는 다음과 get_template_part()같이 말합니다.

참고
-용도 : locate_template ()
-용도 : do_action () 'get_template_part _ {$ slug}'조치를 호출합니다.

Wich를 사용하면 다음을 사용할 수 있습니다 locate_template().

상위 테마에서 상속 된 테마가 하나의 파일을 오버로드 할 수 있도록 TEMPLATEPATH 전에 STYLESHEETPATH를 검색합니다.

TEMPLATEPATH사용하려는 서브 디렉토리로 정의 하면 서브 디렉토리 get_template_part()에서 파일을 검색합니다.

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