http://underscores.me/ 에서 언더스코어스 테마(워드프레스 스타터 테마)를 다운로드 합니다. 텍스트 입력 폼에 생성할 테마의 이름을 정해 입력을 하고 GENERATE 버튼을 클릭하면 됩니다.

언더스코어스 홈페이지언더스코어스 홈페이지


다운로드된 압축파일을 풉니다.

언더스코어스 테마 파일언더스코어스 테마 파일


http://getbootstrap.com/getting-started/#download 에서 부트스트랩 프레임워크를 다운로드 합니다.

Download BootstrapDownload Bootstrap


다운로드 된 파일의 압축을 풉니다. 압축이 풀어진 폴더를 클립보드에 복사(ctrl+c)한 후 언더스코어스 테마 폴더(직접 설정한 테마명)에 붙여넣고, 폴더명을 'bootstrap'으로 수정합니다(예: bootstrap-3.3.6-dist를 bootstrap으로 수정).

부트스트랩 압축 파일 풀기부트스트랩 압축 파일 풀기

언더스코어스 테마에 부트스트랩 폴더 붙여넣기언더스코어스 테마에 부트스트랩 폴더 붙여넣기


테마 파일 폴더에 있는 미리보기 이미지 'screenshot.png' 파일을 포토샵, 김프 등의 이미지 편집기를 사용하여 편집하고 저장합니다.

그래픽 프로그램에서 screenshot.png 파일 편집그래픽 프로그램에서 screenshot.png 파일 편집

screenshot.png 편집 완료screenshot.png 편집 완료


언더스코어스 테마 폴더에 있는 PHP 파일 중에서 functions.php 파일을 텍스트 에디터에서 엽니다.

functions.php 파일functions.php 파일


functions.php 파일의 코드 가장 아래에 다음의 소스 코드를 붙여 넣습니다.

/**
 * Add Bootstrap3 style and script
 */
function bootstrap_styles() {
wp_enqueue_style('bootstrap-stylesheet', get_stylesheet_directory_uri() . '/bootstrap/css/bootstrap.css');
wp_enqueue_script('bootstrap-script', get_stylesheet_directory_uri() . '/bootstrap/js/bootstrap.js', array('jquery'));
}
add_action('wp_enqueue_scripts', 'bootstrap_styles');


부트스트랩 추가 소스 코드부트스트랩 추가 소스 코드


블로그 이미지

환타73

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

,

스타터 테마 언더스코어스 분석

워드프레스 제작진이 워드프레스 사용자 및 테마 개발자들을 위해서 배포하고 있는 스타터 테마인 언더스코어스 테마를 구성하는 템플릿 파일(PHP 파일)들을 살펴보고 분석합니다. 테마 계층 구조를 통해서 알게 된 지식을 떠올리면 테마를 구성하고 있는 PHP 파일들의 용도를 쉽게 예상할 수 있을 것입니다.

_S 테마 다운로드

링크 : 언더스코어스 홈페이지

언더스코어스 홈페이지언더스코어스 홈페이지

Advanced Options를 열어서 생성할 테마에 대한 정보를 보다 자세히 입력할 수도 있습니다.

확장 옵션확장 옵션을 통해 테마 정보 입력 가능

입력란에 테마 이름으로 사용할 단어를 넣고 GENERATE 버튼을 클릭하여 테마 파일을 다운로드 받습니다.

테마 파일 다운로드지정한 이름의 _S 스타터 테마 생성 및 다운로드

_S 테마 설치

다운로드 받은 _S 테마 파일을 워드프레스에 설치합니다.

_S 테마 추가_S 테마 파일 설치

_S테마 파일이 등록된 것을 확인합니다. 썸네일 이미지 파일(screenshot.png)이 비어있기 때문에 아직 그림이 나타나지는 않습니다.

테마 관리 화면테마 관리 화면에서 _S 테마 설치 확인

테마를 활성화하고 Theme Editor에서 구성 파일을 봅니다.

테마 구성 파일_S 테마 구성 파일 전체

_S 테마 파일 구조 및 역할

_S를 구성하고 있는 파일들은 워드프레스 테마 구성 파일들 중에서 Primary Template 들이 주로 사용되었고, 커스텀 템플릿 파일을 불러오는 방식으로 여러 형식의 컨텐츠를 표시합니다.

    [ROOT] 디렉토리
  • 404.php : 페이지가 없는 경우 출력되는 에러 페이지 템플릿
  • archive.php : 아카이브(전체 글 목록) 템플릿
  • comments.php : 댓글 출력 템플릿
  • footer.php : 푸터 출력 템플릿
  • functions.php : 함수 정의 템플릿 - 기능 구현
  • header.php : 헤더 출력 템플릿
  • index.php : 인덱스 템플릿
  • page.php : 개별 페이지 출력 템플릿
  • rtl.css : 우측~좌측 글쓰기 언어용 스타일시트
  • screenshot.png : 테마 모양 미리보기용 스크린샷 파일
  • search.php : 검색 결과 페이지 출력 템플릿
  • sidebar.php : 사이드바 출력 템플릿
  • single.php : 개별 글 출력 템플릿
  • style.css : 스타일 시트
    [inc] 디렉토리
    참고 : inc = include
  • custom-header.php : 헤더 이미지 추가 기능
  • customizer.php : 테마 사용자 정의 옵션
  • extras.php : 테마 템플릿 독립 사용자 정의 기능
  • jetpack.php : 제트팩 호환성 파일 (무한 스크롤을 위한 테마 지원 추가)
  • template-tags.php : 이 테마를 위한 사용자 정의 템플릿 태그들
    [js] 디렉토리
    참고 : js = javascript
  • customizer.js : 테마 사용자 정의 기능 향상
  • navigation.js : 작은 화면용 내비게이션 및 드롭다운 지원
  • skip-link-focus-fix.js : 키보드 내비게이션을 위한 사용성 향상
    [languages] 디렉토리
    언어 파일 디렉토리
  • readme.txt : 언어 파일 도움말
  • 테마명.pot : 언어 파일 - poeditor 라는 프로그램에서 편집 가능
    [layouts] 디렉토리
    페이지 레이아웃 스타일 디렉토리
  • content-sidebar.css : 컨텐츠 좌측, 사이드바 우측 스타일
  • sidebar-content.css : 사이드바 좌측, 컨텐츠 우측 스타일
    [template-parts] 디렉토리
    개별 컨텐츠(페이지, 글 등) 템플릿 파일 디렉토리
  • content-none.php : 컨텐츠가 없는 경우 사용되는 템플릿(search.php, archive.php, index.php에서 연동)
  • content-page.php : 컨텐츠가 정적 페이지인 경우 사용되는 템플릿(page.php에서 연동)
  • content-search.php : 컨텐츠가 검색 결과 페이지인 경우 사용되는 템플릿(search.php에서 연동)
  • content-single.php : 컨텐츠가 개별 글인 경우 사용되는 템플릿(single.php에서 연동)
  • content.php : 컨텐츠가 archive, index 인 경우 사용되는 템플릿
블로그 이미지

환타73

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

,

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

테마 계층 구조에서는 홈페이지의 컨텐츠가 출력되는 일련의 흐름을 기준으로 설명했고, 이번에는 기능별로 파일들을 묶어서 살펴봅니다. 최하단에 있는 "계층 필터" 항목은 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

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

,