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

hweejin_cha님의 프로필 이미지
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)에 대한 상세 페이지를 위해 직접 추가한 파일입니다. 이처럼 워드프레스는 다양한 템플릿 파일 명명 규칙을 통해 유연한 커스터마이징을 지원합니다.

hweejin_cha님의 프로필 이미지
hweejin_cha

작성한 질문수

질문하기