워드프레스 홈페이지 설정 및 템플릿 계층구조

2020. 6. 13. 09:25

워드프레스에서 홈페이지 설정 및 글(Post), 페이지(Page), 카테고리(Category) 등의 파일을 결정하는 워드프레스의 템플릿 계층 구조에 대해서 알아보겠습니다.

 

1. 템플릿 계층구조 : 모든 페이지는 index.php로 귀결

워드프레스를 처음 개발하는 사람들이 많이 갖은 의문점은 '이 페이지의 PHP 파일이 어디있지?' 일 겁니다. 특히 홈페이지 파일를 못찾아서 처음부터 헤매는 경우도 많이 있는데요. 다른 프로그램 프레임워크에서는 첫 페이지는 무조건 index 파일을 찾으면 됩니다만, 워드프레스에서는 각 페이지를 보여줄 파일이 고정적으로 정해져 있지 않습니다. 어떤 PHP 파일로 보여줄 지는 각 페이지의 계층구조의 정해진 순서별로 파일을 찾아서 결정하게 됩니다. 모든 가능한 파일을 검색했는데 아무것도 없을 경우에는 index.php 파일을 보여주게 됩니다.

 

아래가 워드프레스에서 소개하고 있는 '템플릿 계층구조(Template Hierarchy)' 입니다.

템플릿 계층구조(Template Hierarchy)

여기를 클릭하시면 큰 다이어그램으로 볼 수 있습니다.

 

좀 복잡해보이지만, 밑에 설명을 듣고 다시보면 그렇게 어렵지도 않습니다.

 

2. 홈페이지가 home.php가 아니고 front-page.php 라고?

먼저 홈페이지의 php 파일부터 찾아볼까요.

 

  • 1순위: front-page.php
  • 2순위: home.php 또는 단일 페이지의 php 파일

 

어! home.php가 홈페이지가 아니네요.

네 맞습니다. home.php는 글(Post)의 index 페이지 입니다. 정작 홈페이지의 1순위는 front-page.php인거죠. 그래서, 워드프레스의 아래 그림에 나오는 '홈페이지 설정'에서, '최근 글'을 선택하는냐 '정적인 페이지'를 선택하느냐에 따라서 2순위가 결정이 되게 됩니다.

홈페이지 설정

  • '최근 글': home.php
  • '정적인 페이지': 선택된 단일 페이지의 php 파일

 

'홈페이지 표시'를  '정적인 페이지'로 선택했을 경우에는 다음에서 살펴볼 페이지의 파일 우선순위에 따라서 또 달라지게 됩니다.

 

3. 단일 페이지(Page)의 파일 우선 순위

워드프레스는 단일 페이지의 PHP 파일은 page.php 뿐만아니라 아래와 같은 우선 순위로 파일을 결정합니다.

 

  • 1순위: 페이지에서 선택된 템플릿 파일
  • 2순위: page-{slug}.php
  • 3순위: page-{id}.php
  • 4순위: page.php
  • 5순위: singular.php

 

그러니까 아래와 같이 해당 페이지의 편집기에서 '기본 템플릿'외의 특정 템플릿을 선택하였을 경우에는 그 해당 템플릿의 파일이 우선적으로 선택이 되는거죠.

페이지 템플릿 선택

4. 단일 글(Post)의 파일 우선 순위

그렇다면 글 포스트의 파일 우선 순위는 어떻게 될까요?

 

  • 1순위: 글에서 선택된 템플릿 파일
  • 2순위: single-{post-type}-{slug}.php
  • 3순위: single-{post-type}.php
  • 4순위: single.php
  • 5순위: singular.php

 

여기 워드프레스 사이트에는 설명이 빠졌는데, 제가 테스트해본 결과 역시 단일 글의 경우도 1순위는 선택된 템플릿 파일 입니다. 그 다음으로는 워드프레스 4.4 버젼부터 slug가 있는 템플릿을 우선하게 찾는 기능이 추가되었는데요, 예를 들어서, product 포스트 타입의 pacman이라는 slug의 글의 PHP 파일은 single-product-pacman.php이 2순위입니다.

주의할 사항은 단일 글의 경우에는 단일 페이지와 다르게 single-{id}.php 또는 single-{post-type}-{id}.php 형태로는 파일을 선택될 수 없다는 점입니다. 제가 테스트 해봤는데, 둘다 인식이 안되네요.

그리고 워드프레스의 기본으로 있는 일반 글의 post-type은 'post'입니다. 그래서 위의 pacman 포스트가 일반 글이 였다면, single-post-pacman.php로 파일을 만들어야 워드프레스가 인식할 수 있습니다.

 

5. 카테고리와 태그의 파일 우선 순위

마지막으로 카테고리와 태그의 파일 우선 순위를 간단히 알아보죠.

카테고리와 태그는 워드프레스에서 말하는 taxonomy(텍소노미) 일종인데요, PHP파일을 결정하는 우선순위는 각각 아래와 같습니다.

 

카테고리
  • 1순위: category-{slug}.php
  • 2순위: category-{id}.php
  • 3순위: category.php
  • 4순위: archive.php

태그
  • 1순위: tag-{slug}.php
  • 2순위: tag-{id}.php
  • 3순위: tag.php
  • 4순위: archive.php

 

위에서 알아본 경우 이외에도 커스텀 포스트 타입, 날짜, 검색 등도 각각의 우선 순위가 있는데요.

더 자세한 설명은 아래의 워드프레스 사이트를 참고해보세요.

 

한번 더 강조하지만, 워드프레스는 모든 파일을 찾아보다가 없으면 결국 index.php를 불러오게 되는데요, 그래서 그런지 저같은 경우에는 반대로 그런 이유에서 index.php는 거의 손을 안대고 기본상태로 남겨놓는 경우가 많이 있는데요. 왜냐하면 어떤 페이지에서 불려질 지 모르기 때문에 변경했을 경우 내가 모르는 페이지에서 문제가 발생할 수 있기 때문이죠.

 

다시 한번 위의 '템플릿 계층구조' 이미지를 확인해 보세요, 이제 조금 이해가 가시나요?

도움이 되었기를 바라며, 즐거운 워드프레스 프로그래밍 되세요.

 

 

ACF(Advanced Custom Fields) 워드프레스 플러그인 사용법

ACF(Advanced Custom Fields)은 워드프레스 프로그래머에서 필수 플러그인 이라고 할 수 있습니다. ACF을 사용하고부터는 워드프레스 위젯을 전혀 사용하지 않고도 쉽게 원하는 페이지 ��

goodbypoor.tistory.com

 

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band