워드프레스 템플릿 계층 구조의 이해

워드프레스는 사이트의 겉모습은 템플릿구조로 되어 있습니다.
템플릿 (template) : 형판 (무언가를 여러개 같은모양으로 찍어내는 틀) 이죠.
글자 그대로 입니다.
형판을 만들어 놓고 필요한 순간에 필요한 형판을 꺼내서 찍어내는거죠.

우리의 워드프레스 파일 중에는 테마 폴더가 있고, (예를들어 2013테마,2014테마 등) 그 각각의 테마폴더 내에는 여러개의 템플릿 파일 들이 존재합니다.

어떤 순간에 어떤 템플릿(형판)을 꺼내서 쓸것인가는 워드프레스 내부에서 결정을 합니다.
그 내부의 결정근거는 클라이언트가 원하는 화면이 어떤화면인가를 분석하는겁니다.일명 쿼리라고 합니다.
어떤 쿼리가 주워 졌는가에 따라서 어떤 템플릿을 쓸것인가를 결정하는겁니다.

  • 예1.
    누군가가 네이버나, 구글을 통해서 또는 주소창에 나의 사이트 도메인을 직접 써서 브라우저를 작동시킬때, 나의 서버로 오는 명령어는 나의 도메인이 됩니다.
    그러면 워드프레스는 판단을 하죠..
    ( 아! 손님이 왔군. 명령어를 보니 메인화면이네. 메인화면에는 최근 포스트 를 보여주기로 했었나? 아니면 정적페이지를 보여주기로 했었나? 데이터베이스에 설정을 확인해 봐야 겠군… 음 … 최근포스트로 한 화면에 10개로 설정되어있었네… 테마는… 2013이고, 테마내에 home.php 파일이 있었나… 없네.. 그럼 다음 옵션인 index.php파일은 있나.. 음 있군 .. 그럼 이 템플릿파 (index.php)에 찍어서 첫 화면을 보여 주자구….. )
    이런 과정을 거쳐서 클라이언트의 요구에 화면을 보여줍니다.
  • 예2.

    나의 사이트를 구경하던 손님이 내가 최근에 올린 포스트를 보다가 , 구석에 있던 태그 클라우드에서 ‘apple’ 이라는 태그하나를 발견하고 , 그 태그를 누릅니다. ‘apple’이라는 태그가 먹여진 관련 포스트를 보겠다는 뜻이 겠죠? 워드프레스 코어는 또다시 바쁘게 움직이기 시작합니다. 아! 이번에 태그다! ‘apple’이라는 태그가 저장되어있는 모든 글들을 데이터 베이스에서 꺼내와라… 한 15개 정도 되네.. 그런데 이걸 어느 템플릿에 찍어내야하나?

    워드프레스는 정해진 규칙대로 움직입니다.

    먼저 ‘apple’ 이라는 태그를 등록할때, 같이 등록된(=메타데이터) 슬러그 (slug)를 알아내고, tag-$slug.php 파일을 찾습니다.
    ( 가령 ‘apple’ 태그 의 슬러그가 같은 이름으로된 ‘apple’이라는 슬러그로 등록되어 있다면, tag-apple.php 파일을 찾을 것이고,’apple’태그를 등록할때 slug를 ‘slugname-apple’라고 등록하였다면, tag-slugname-apple.php 라는 파일을 찾을겁니다.)

    그런데 사용중인 테마폴더내에 위와 같은 이름의 템플릿파일이 없다면, 다음단계인 해당 태그 (여기선 ‘apple’)의 id를 조회해서 템플릿 파일을 찾아냅니다.

    만약 ‘apple’의 id가 132번 이면, tag-132.php 파일을 찾는거죠… 그런데 이파일도 사용중인 테마폴더 내에 없다면, 그 다음 단계인 태그의 대표 파일인tag.php 파일을 찾습니다.
    이것도 사용중인 테마폴더내에 없다면, 다음단계로 넘어가서 archive.php 파일을 찾습니다.
    그런데 이것마저 없다면….. 결국 어느 테마에나 꼭 하나있는 ..index.php 파일을 선택하게 됩니다.

    그리고 index.php 파일을 이용해서 그 안에 15개의 ‘apple’이라는 태그가 포함된 포스트를 보여주는 겁니다.

이처럼 템플릿파일을 결정하는 순서는이미 약속처럼 정해져 있고, 이것을 워드프레스에서는 Template Hierarchy 라고 부릅니다.

이 템플릿 계층에 따라서 테마폴더 내에 각각의 테마 분위기에 맞는 템플릿 파일이 존재 합니다.