워드프레스 테마 계층구조 WordPress Theme Hierarchy

워드프레스 홈페이지의 외모 부분을 담당하는 테마는 홈페이지를 구성하는 콘텐츠의 종류 및 출력하는 방식에 따라 이를 담당하는 PHP 파일들이 미리 정해져 있으며 이들 사이에는 지켜야할 규칙이 있습니다. 이를 테마 파일의 계층(hierarchy)이라고 합니다.

워드프레스 코덱스 사이트에서 검색창에 hierarchy 키워드를 넣어 검색하면 이와 관련된 문서들을 찾을 수 있으며 아래의 그림은 검색결과에서 찾아볼 수 있는 계층구조도를 제 나름대로 한글화한 것입니다.

링크 : 워드프레스 코덱스

사각 상자안의 글자들이 직선으로 서로 이어져 있는 모습들이 어떤 관계성을 보여주고 있고, 맨 아래쪽에 색상별 상자의 성격을 설명하고 있습니다.

  • 청녹색 : Primary Template - 주(중요) 템플릿 : 중요 PHP 파일
  • 하늘색 : Secondary Template - 부(보조) 템플릿 : 보완 PHP 파일
  • 주황색 : Variable Template - 변수 템플릿 : 개별화 PHP 파일
  • 짙은회색 : Page Type - 페이지 형식 : 출력될 컨텐츠

주 템플릿을 세분화하는 것이 부 템플릿이고 이를 더 세분화하는 것이 변수 템플릿 이라고 생각하면 쉽게 이해할 수 있을 것입니다.

테마 파일 계층 구조도워드프레스 테마 파일 계층 구조도

Primary Template : 주 템플릿

  • index.php
    가장 중요한 파일로서 이 파일이 없으면 테마가 동작하지 않습니다. 보통 최근 날짜 순으로 전체 콘텐츠들이 출력되는 방식으로 프로그래밍 됩니다.
  • archive.php
    전체 내용(아카이브) 출력 파일입니다.
  • single.php
    개별 글(post) 출력 파일입니다.
  • page.php
    개별 페이지 출력 파일입니다.
  • home.php
    전면페이지(최근 글) 혹은 블로그 형식(조건)에서의 글 목록 출력 파일입니다.
  • comments-popup.php
    팝업(자바스크립트) 댓글 출력 파일입니다.
  • 404.php
    페이지가 존재하지 않는 등의 에러 발생시 출력 파일입니다.
  • search.php
    검색 결과 출력 파일입니다.

Secondary Template : 부 템플릿

  • author.php
    글쓴이(저자)별 전체 내용을 출력합니다.
  • category.php
    카테고리별 전체 내용을 출력합니다.
  • texonomy.php
    텍소노미(분류)별 전체 내용을 출력합니다.
  • date.php
    날짜별 전체 내용을 출력합니다.
  • tag.php
    태그별 전체 내용을 출력합니다.
  • attachment.php
    첨부파일 개별 글을 출력합니다.
  • single-post.php
    블로그 개별 글을 출력합니다.
  • front-page.php
    전면 페이지를 출력합니다.

Variable Template : 변수 템플릿

  • archive-$posttype.php
    글 유형에 따른 전체 내용을 출력합니다.
  • page-$id.php
    페이지 ID에 따른 개별 페이지를 출력합니다.
  • $mimetype_$subtype.php
    첨부파일 데이터 종류 및 확장자에 따른 개별 글을 출력합니다.
  • author-$id.php
    글쓴이 ID에 따른 전체 내용을 출력합니다.
  • category-$id.php
    카테고리 ID에 따른 전체 내용을 출력합니다.
  • taxonomy-$taxonomy.php
    사용자 분류에 따른 전체 내용을 출력합니다.
  • tag-$id.php
    태그 ID에 따른 전체 내용을 출력합니다.
  • $subtype.php
    첨부 파일 데이터 확장자에 따른 개별 글을 출력합니다.
  • $custom.php
    사용자(정의) 템플릿 페이지를 출력합니다.
  • author-$nicename.php
    글쓴이의 Nicename에 따른 전체 내용을 출력합니다.
  • category-$slug.php
    카테고리 슬러그에 따른 전체 내용을 출력합니다.
  • taxonomy-$taxonomy-$term.php
    사용자 분류 내 소분류에 따른 전체 내용을 출력합니다.
  • tag-$slug.php
    태그 슬러그에 따른 전체 내용을 출력합니다.
  • $mimetype.php
    첨부 파일 데이터 종류에 따른 개별 글을 출력합니다.
설명 예 : 사이트 전면 페이지 - 그림의 좌측에서 우측으로 분석

홈페이지가 로딩되고 첫 페이지가 열린 경우 (사이트 전면 페이지:Site Shown On Front) - [front-page.php]을 출력합니다.

[front-page.php]가 없으면

분기 1 : 전면에 페이지가 나오는 경우(전면 출력 페이지:Page Shown On Front) - (페이지 템플릿:Page Template)를 찾습니다.

분기 1-1 : 페이지 템플릿이 사용자가 설정한 템플릿이라면(사용자정의 템플릿:Custom Template) - [$custom.php]를 출력합니다.
($custom은 사용자가 임의로 정한 파일명이고 파일 내부에 템플릿 이름-Template Name-이 정의되어 있습니다.)

분기 1-1-1 : [$custom.php]가 없다면 분기 1-2와 합류하여 [page-$slug.php]를 출력합니다. 분기 1-2에 관련 파일이 없다면 [page.php]를 출력합니다.
($slug는 각 페이지별로 사용자가 설정한 고유주소입니다.)

분기 1-2 : 페이지 템플릿을 따로 설정하지 않았다면(기본 템플릿:Default Template) - [page-$slug.php]를 출력하고, 없다면 [page-$id.php]를 출력합니다. 둘 다 없으면 [page.php]를 출력합니다.
($id는 각 페이지가 저장될 때 자동적으로 부여되는 고유번호입니다.)

분기 1 최종 : [page.php]가 없으면 [index.php]를 출력합니다.

분기2 및 최종 : 전면에 글들(posts)이 나오는 경우(전면 출력 글들:Posts Shown On Front) - [home.php]를 출력하고, 없다면 [index.php]를 출력합니다.

처음에는 이해하기 쉽지 않겠지만 테마 파일을 만들다보면 자연스럽게 이해를 할 수 있기 때문에 걱정할 필요는 없습니다. 우선 제일 대표적인 Primary Template 만이라도 알아두는 것으로도 테마 구조에 대해서 반 이상은 알게 된 것입니다.

블로그 이미지

환타73

디지털 콘텐츠 제작 및 연구 & 개발. 온오프라인 강의.

,