인프런 커뮤니티 질문&답변

hweejin_cha님의 프로필 이미지

작성한 질문수

워드프레스 제대로 개발하기 - 클라이언트 편

상세화면용 표지 불러 오기 1

single-book.php 파일은 워드프레스 기본 제공 파일인가요?

해결된 질문

작성

·

191

·

수정됨

1

3분 20초에 singular.php 파일은 포스트, 북 등 모든 파일을 보여주는 페이지라서 북 상세용 파일인 single-book.php 파일을 만드시고 바로 북 상세 파일로 적용됐습니다.

여기서 궁금한점이 어떻게 어떤 설정 없이 single-book.php 파일이 자동적으로 북 상세페이지 전용 파일로 지정될 수 있나요?

single-{key].php 로 하면 key의 전용페이지가 되는 규칙이 있는 건지 궁금합니다.

 

답변 2

0

워드프레스 개발님의 프로필 이미지
워드프레스 개발
지식공유자

안녕하세요. 질문 감사합니다.

그런데 제가 답변이 너무 늦었네요. 죄송합니다 🙏

답을 드리지 않은 사이에 이미 수업에서 관련 내용을 들으셨을 것 같습니다. "61강 템플릿 우선순위"가 정확히 질문하신 내용을 자세히 다루고 있으니까요.

아니면 아래 "인프런 AI 인턴"의 답변도 잘 돼 있어서, 그것만으로 금세 이해를 하셨을 수도 있을 것 같고요.

이미 질문이 해결되신 듯해 제가 답을 반복할 필요는 없을 것 같습니다.

그러나 죄송한 마음을 담아 조금 다른 설명을 드리겠습니다.

 

URL에 따라 single.phpsingle-book.php와 같은 템플릿을 불러오는 코드는 wp-includes/template-loader.php에 있습니다. 이 파일의 69번째 줄을 보면 이게 싱글이라면(`is_single()`이 참이면) get_singular_template() 함수를 써서 템플릿이 뭔지 알아내라 하고 정의가 돼 있습니다.

'is_single'            => 'get_single_template',

사실 위와 같이 배열로 돼 있는데, 배열 아래쪽의 79~91라인을 보면 결국 call_user_function()으로 is_singleget_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 ) ) {

 

제 답변이 조금이나마 도움이 되셨으면 좋겠습니다.

감사합니다.

hweejin_cha님의 프로필 이미지
hweejin_cha
질문자

AI답변으로 대략 이해했는데 상세한 답변 감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다.

제공해주신 정보 중에 워드프레스나 single-book.php 파일에 대한 직접적인 언급이 없어, 구체적인 답변을 드리기 어렵습니다. 하지만 일반적인 워드프레스 지식에 기반해 설명드리겠습니다.

워드프레스에서는 single-{post_type}.php 템플릿명 규칙을 통해 특정 포스트 타입의 상세 페이지를 위한 템플릿을 지정할 수 있습니다. 여기서 {post_type}은 포스트 타입의 이름을 나타냅니다. 만약 book이라는 포스트 타입을 생성했다면, single-book.php 파일을 만들어 해당 포스트 타입의 상세 페이지로 사용할 수 있습니다. 이는 워드프레스 템플릿 계층 구조의 일부로, 특정 포스트 타입에 맞는 상세 페이지를 디자인할 수 있는 유연성을 제공합니다.

따라서, single-book.php 파일은 워드프레스가 기본 제공하는 파일은 아니며, 사용자가 생성한 특정 포스트 타입(book)에 대한 상세 페이지를 위해 직접 추가한 파일입니다. 이처럼 워드프레스는 다양한 템플릿 파일 명명 규칙을 통해 유연한 커스터마이징을 지원합니다.