단축 코드 내부의 템플릿 부분, 예기치 않은 결과
단축 코드를 통해 템플릿 부분을 호출하려고합니다. 이 사이트에서이 작업을 반복하는 방법에 대해 모두 읽었지만 여러 가지를 시도한 후에도 여전히 간단한 PHP 에코 시간 문자열을 호출 할 수 없습니다. 파일 이름은 test-one.php입니다 . 내가 시도한 내용은 다음과 같습니다.
function test_2( $attr ) {
ob_start();
get_template_part( 'test', 'one' );
return ob_get_clean();
}
add_shortcode('test2', 'test_2');
function test_2( $attr ) {
ob_start();
get_template_part( 'test-one' );
return ob_get_clean();
}
add_shortcode('test2', 'test_2');
function test_2( $attr ) {
ob_start();
get_template_part( 'wp-content/themes/theme-name/template-parts/test-one' );
return ob_get_clean();
}
add_shortcode('test2', 'test_2');
템플릿 부품 코드는
<?php
echo "Current as of <br> ".date("m-d-Y h:i:sa");
작동해야 할 것 같지 않습니까? 내가 어디로 잘못 가고 있습니까?
답변
이 get_template_part()
함수는 디렉토리 이름을 가정하지 않으므로 명시 적으로 제공해야합니다. 또한 활성 테마 디렉토리와 관련이 있습니다. 따라서 많은 예제에서 활성 테마의 루트에서 템플릿을 찾고있었습니다. 올바른 형식은 다음과 같습니다.
get_template_part( 'template-parts/test-one' );
원하는 경우 폴더 이름을 inc
또는 includes
-임의적입니다. 이 변경 사항을 함수 호출에 반영하기 만하면됩니다.
참고로 WordPress는 두 번째 매개 변수를 전달할 수 있으며 대시로 연결된 파일을 찾습니다. 예를 들어 다음과 같이 작동합니다.
get_template_part( 'template-parts/test', 'one' );
이것의 장점은 특정 부품의 여러 "유형"을 가질 수 있다는 것입니다. content-post.php
게시물 내용을 출력 하는 파일과 content-page.php
페이지 내용을 출력 하는 파일 이있을 수 있습니다 . 그런 다음 테마에서 다음과 같이 템플릿을 호출 할 수 있습니다.
get_template_part( 'template-parts/content', $post->post_type );
좀 더 역동적으로 만들 수 있습니다.
또 다른 메모. 이러한 종류의 기능에 문제가있을 때 언제든지 사용할 수 있습니다.
add_action( 'init', function() {
$template = locate_template( $template_string_here ); printf( '<pre>%s</pre>', print_r( $template, 1 ) );
die( 'end' );
} );
그러면 WordPress가 템플릿에 액세스하려는 템플릿 경로가 출력됩니다.