해결된 질문
작성
·
191
·
수정됨
답변 2
0
안녕하세요. 질문 감사합니다.
그런데 제가 답변이 너무 늦었네요. 죄송합니다 🙏
답을 드리지 않은 사이에 이미 수업에서 관련 내용을 들으셨을 것 같습니다. "61강 템플릿 우선순위"가 정확히 질문하신 내용을 자세히 다루고 있으니까요.
아니면 아래 "인프런 AI 인턴"의 답변도 잘 돼 있어서, 그것만으로 금세 이해를 하셨을 수도 있을 것 같고요.
이미 질문이 해결되신 듯해 제가 답을 반복할 필요는 없을 것 같습니다.
그러나 죄송한 마음을 담아 조금 다른 설명을 드리겠습니다.
URL에 따라 single.php
나 single-book.php
와 같은 템플릿을 불러오는 코드는 wp-includes/template-loader.php
에 있습니다. 이 파일의 69번째 줄을 보면 이게 싱글이라면(`is_single()`이 참이면) get_singular_template()
함수를 써서 템플릿이 뭔지 알아내라 하고 정의가 돼 있습니다.
'is_single' => 'get_single_template',
사실 위와 같이 배열로 돼 있는데, 배열 아래쪽의 79~91라인을 보면 결국 call_user_function()
으로 is_single
과 get_single_template
을 호출하고 있는 것을 볼 수 있습니다.
get_single_template()
함수는 wp-includes/template.php
파일의 549번째 줄에 정의돼 있는데요. $templates
라는 배열에 single용 템플릿이 될 수 있는 파일명을 우선순위별로 쭉 담습니다.
single-book.php
의 경우 get_single_template()
함수 안에서 그 모습을 찾아 볼 수 있습니다. 함수가 있는 파일에서 566번째 줄을 보면 템플릿 우선순위를 담는 $templates
배열에 single-{$object->post_type}.php
를 담고 있거든요.
이후 $templates
의 내용을 참고해서 최종 템플릿 파일을 고르는데요.
get_single_template()
→ get_query_template()
→ locate_template()
순서로 들어가면서 실행이 됩니다.
이중 실제로 템플릿 후보가 될 파일이 있는지 검사하고 있으면 해당 경로를 리턴해 주는 역할을 하는 게 locate_template()
함수입니다.
locate_template()
함수는 wp-includes/template.php
파일의 718라인에 정의돼 있는데요. 732라인을 보면 아래처럼 파일이 있는지 검사하는 코드를 볼 수 있습니다.
if ( file_exists( $wp_stylesheet_path . '/' . $template_name ) ) {
제 답변이 조금이나마 도움이 되셨으면 좋겠습니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
제공해주신 정보 중에 워드프레스나 single-book.php 파일에 대한 직접적인 언급이 없어, 구체적인 답변을 드리기 어렵습니다. 하지만 일반적인 워드프레스 지식에 기반해 설명드리겠습니다.
워드프레스에서는 single-{post_type}.php
템플릿명 규칙을 통해 특정 포스트 타입의 상세 페이지를 위한 템플릿을 지정할 수 있습니다. 여기서 {post_type}
은 포스트 타입의 이름을 나타냅니다. 만약 book
이라는 포스트 타입을 생성했다면, single-book.php
파일을 만들어 해당 포스트 타입의 상세 페이지로 사용할 수 있습니다. 이는 워드프레스 템플릿 계층 구조의 일부로, 특정 포스트 타입에 맞는 상세 페이지를 디자인할 수 있는 유연성을 제공합니다.
따라서, single-book.php 파일은 워드프레스가 기본 제공하는 파일은 아니며, 사용자가 생성한 특정 포스트 타입(book
)에 대한 상세 페이지를 위해 직접 추가한 파일입니다. 이처럼 워드프레스는 다양한 템플릿 파일 명명 규칙을 통해 유연한 커스터마이징을 지원합니다.
AI답변으로 대략 이해했는데 상세한 답변 감사합니다!