워드프레스 테마 파일 기능별 분류

테마 계층 구조에서는 홈페이지의 컨텐츠가 출력되는 일련의 흐름을 기준으로 설명했고, 이번에는 기능별로 파일들을 묶어서 살펴봅니다. 최하단에 있는 "계층 필터" 항목은 PHP 프로그래밍에 사용되는 것이므로 프로그래밍 지식이 없으신 분은 우선은 무시하셔도 됩니다.

참고 : 설명에 있는 "템플릿 파일"은 테마를 구성하는 "PHP 파일"과 같은 뜻이라고 생각하면 됩니다.

홈페이지 표시

사이트 전면 페이지 혹은 정적 페이지를 통해 출력되는 블로그 글 인덱스 페이지 표시에 사용되는 템플릿 파일입니다. 주의점으로는 사이트 전면 페이지의 경우 전면페이지 템플릿이 블로그 인덱스 페이지(home) 템플릿보다 우선한다는 것입니다.

  1. home.php : 읽기 설정 - 전면 페이지 - 블로그에 설정된 페이지에 연동되어서 출력
  2. index.php : 필수 테마 파일

전면 페이지 표시

정적 페이지나 블로그 글 인덱스가 출력되는 전면 페이지를 통해 사이트 전면 페이지 표시에 사용되는 템플릿 파일입니다.

  1. front-page.php : 읽기 설정과 관계 없이 사용가능
  2. 정적 페이지 표시 규칙 : 읽기 설정 - 정적인 페이지 - 전면 페이지가 설정되어 있는 경우
  3. 홈 페이지 표시 규칙 : 읽기 설정 - 정적인 페이지 - 글 페이지가 설정되어 있는 경우

개별 글 표시

개별 글 표시에 사용되는 템플릿 파일입니다.

  1. single-$posttype.php : 글 유형에 따라 해당 글 표시(single-product.php)
  2. single.php
  3. index.php

페이지 표시

정적 페이지 표시에 사용되는 템플릿 파일입니다.

  1. 사용자 템플릿 파일 : 페이지 템플릿 정의가 되어 있는 PHP파일
  2. page-$slug.php : 페이지의 슬러그명을 통해 해당 페이지 표시(page-recent-news.php)
  3. page-$id.php : 페이지의 ID를 통해 해당 페이지 표시(page-6.php)
  4. page.php
  5. index.php

카테고리 표시

카테고리 아카이브 표시에 사용되는 템플릿 파일입니다.

  1. category-$slug.php : 카테고리의 슬러그명을 통해 해당 카테고리 아카이브 표시(category-news.php)
  2. category-$id.php : 카테고리의 ID를 통해 해당 카테고리 아카이브 표시(category-6.php)
  3. category.php
  4. archive.php
  5. index.php

태그 표시

태그 아카이브 표시에 사용되는 템플릿 파일입니다.

  1. tag-$slug.php : 태그의 슬러그명을 통해 해당 태그 아카이브 표시(tag-sometag.php)
  2. tag-$id.php : 태그의 ID를 통해 해당 태그 아카이브 표시(tag-6.php)
  3. tag.php
  4. archive.php
  5. index.php

사용자 분류 표시

사용자 분류 아카이브 표시에 사용되는 템플릿 파일입니다.

  1. taxonomy-$taxonomy-$term.php : 사용자 분류명과 소분류명(항)을 통해 해당 아카이브 표시(texonomy-post_format-post-format-link.php)
  2. taxonomy-$taxonomy.php : 사용자 분류명을 통해 해당 아카이브 표시(taxonomy-sometax.php)
  3. taxonomy.php : 사용자 분류를 통해 아카이브 표시
  4. archive.php
  5. index.php

사용자 글 유형(Custom Post Type) 아카이브 표시

사용자 글 유형 아카이브 표시에 사용되는 템플릿 파일입니다.

  1. archive-$posttype.php : 사용자 글 유형 아카이브 표시(archive-product.php)
  2. archive.php
  3. index.php

사용자 글 유형의 개별 페이지를 표시는 "개별 글 표시"를 참조합니다.

글쓴이 표시

글쓴이 아카이브 표시에 사용되는 템플릿 파일입니다.

  1. author-$nicename.php : 글쓴이의 nicename을 통해 해당 글쓴이 아카이브 표시(author-rami.php)
  2. author-$id.php : 글쓴이의 ID를 통해 해당 글쓴이 아카이브 표시(author-6.php)
  3. author.php
  4. archive.php
  5. index.php

날짜별 표시

날짜별 아카이브 표시에 사용되는 템플릿 파일입니다.

  1. date.php
  2. archive.php
  3. index.php

검색 결과 표시

검색 결과 아카이브 표시에 사용되는 템플릿 파일입니다.

  1. search.php
  2. index.php

404(결과 없음) 표시

서버 404 에러 표시에 사용되는 템플릿 파일입니다.

  1. 404.php
  2. index.php

첨부 파일 표시

개별 첨부 파일 페이지 표시에 사용되는 템플릿 파일입니다.

  1. $mimetype.php : 첨부 파일의 종류에 해당하는 페이지 표시(image.php, video.php, application.php). 예 : text/plain 의 경우 다음의 순서로 참조.
    1. text.php
    2. plain.php
    3. textplain.php
  2. $subtype.php : 첨부 파일의 확장자에 해당하는 페이지 표시(jpg.php, mp4.php)
  3. $mimetype-$subtype.php : 첨부파일의 종류 및 확장자에 해당하는 페이지 표시(image-jpg.php, video-mp4.php)
  4. attachment.php
  5. single.php
  6. index.php

계층 필터

워드프레스의 템플릿 시스템은 계층적으로 필터를 적용할 수 있습니다. 필터링을 위한 필터 이름은 "{$type}_template"를 사용합니다. PHP 프로그래밍에 사용할 수 있습니다.

    필터 리스트
  • index_template
  • 404_template
  • archive_template
  • author_template
  • category_template
  • tag_template
  • taxonomy_template
  • date_template
  • home_template
  • front_page_template
  • page_template
  • paged_template
  • search_template
  • single_template
  • text_template, plain_template, text_plain_template (all mime types)
  • attachment_template
  • comments_popup
블로그 이미지

환타73

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

,

워드프레스 테마 계층구조 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

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

,