테마별 커스텀 포스트타입 (custom-posttype)

아래의 그림은 서로 다른 테마를 적용한 후의 초기 화면 입니다.
왼쪽은 기본 테마인 2014테마이고 오른쪽은 유료테마인 santone 테마의 적용한 것입니다.
서로 다른점이 있습니다.
워드프레스 커스텀 포스트타입_01

오른쪽의 항목들에는 Portfolio 라는 것이 추가 되어있습니다.

Portfolio 안으로 들어가 보면
워드프레스 커스텀 포스트타입_02

명칭만 portfolio 일 뿐이지 구성은 위의 post와 같습니다. 그런데 써져있는 글중에 하나에 마우스를 올려 보면 표시되는 정보는 같은 post 종이지만 post_type은 portfolio 가 되어 서로 별개의 글쓰기 방법이 됩니다. 바로 이 샌턴테마에서만 제공하는 custom post type 이 portfolio 라는 말입니다.

이제 사용자는 글쓰기를 할때 선택할수있는 방법이 세가지가 되었습니다.
기본제공되는 post와 page 그리고 portfolio 가 그것입니다.

그럼 이제부터 어디에 글을 써야 할까요?

각각의 테마마다 보여주는 퍼포먼스가 다릅니다.
테마가 특화된 분야가 있다는 말입니다.
먼저 샌턴 테마의 데모 화면을 보세요.
http://metcreative.com/demo_viewer/index.php?theme=santonewp

앞에 펼쳐지는 격자안의 사진 하나 하나는 위의 portfolio를 선택해서 글쓰기를 했을 때 만들어진 컨텐츠들이 펼쳐 지는 겁니다.

그러면 샌턴테마에서 portfolio가 아닌 post에 글을 썼을때는 어떻게 보여 질까요?
http://metcreative.com/demo/wp_santone/category/blog/
이렇게 보여 집니다.
서로 다르죠.. 그것은 이 테마가 기본적으로 구성을 이렇게 했기 때문입니다. 그러나 post로 글쓰기를 했을때 보여지는 화면의 구성은 이게 다 입니다.

사실 유료테마의 특성상 이 테마가 보여주고 싶은 특화된 기능은 portfolio를 통해서 글쓰기된 것들을 펼쳐 보이는 화면들입니다.
맨위에서 예로든 화면 이외에도
http://metcreative.com/demo/wp_santone/portfolio-vertical/
http://metcreative.com/demo/wp_santone/portfolio-horizontal/
http://metcreative.com/demo/wp_santone/masonry-portfolio/
http://metcreative.com/demo/wp_santone/grid-effects/portfolio-grid-fade-in/
등등, 이 테마가 제공하는 템플릿(화면구성) 을 사용할수 있게 됩니다.

이처럼 각각의 테마는 보여주고 싶은 특화된 기능이 있고(한가지든 여러가지든), 그 특화된 기능을 사용하는 재료로 커스텀 post type을 만들어서 사용하곤 합니다.

커스텀 포스트타입 생성

워드프레스 사용자는 자신이 원하면 언제든지 얼마든지 커스텀 포스트 타입을 만들수 있습니다.

현재사용중인 테마의 functions.php 파일의 맨 아래에 아래와 같은 코드를 입력해 보세요.

2014테마에 위 코드를 추가한 화면 입니다.
product 라는 명칭에 post_type이 box_product 라는 이름으로 생겼습니다.
워드프레스 커스텀 포스트타입_03

이제 글쓰기 도구가 포스트(post), 페이지(page), 프로덕트(acme_product) 세개가 되었습니다.

 

그런데…문제는 …
프로덕트라는 도구로 글을 쓰더라도 이 테마에서 그 글을 표현해줄 템플릿이 없다는겁니다.
고작 지원되는 템플릿은 single.php 와 archive.php, 최종 index.php 파일 뿐입니다.
index.php파일은 앞에 두개가 버티고 있으니… 절대 쓰이지 않을것이고… 결국은 달랑 두개뿐입니다.
(single.php파일에서 post_type이 달라서인지 저자를 표시하지않아.. author.php 파일로 넘어갈 경로가 없어서 author.php 파일도 쓰이지 않습니다. )

장황하게 설명한거 같지만…

결론은 ” 커스텀 포스트 타입은 만들기가 쉽다. 하지만… 만들어서 쓰려면 템플릿파일을 따로 만들어서 지원해줘야 하기 때문에….사용하기가 쉽지가 않다.
입니다.

이쯤 되면 한가지 드는 의문이 있습니다.

기본제공되는 post 도 그렇고,커스텀 포스트타입으로 만들어진 그 어떤 글쓰기도…. 템플릿(Template)이 지원 되지 않는 다는 겁니다.

페이지 속성 – 페이지 템플릿

템플릿은 페이지 편집화면의 보통 오른쪽에 위치한 페이지속성 메타박스 안에 있습니다. 이 기능은 페이지에만 부여된 기능으로 페이지로 작성된 컨텐츠를 프론트엔드에 표시할 때 기본 템플릿 계층구조를 벗어나 원하는 템플릿을 이용해서 내용을 표시 할 수 있도록 해 줍니다.

아래는 아바다 테마의 페이지 에 있는 템플릿 선택 창입니다.(버전 5 이전)
워드프레스 커스텀 포스트타입_04

페이지 하나에 선택할수 있는템플릿이 저렇게나 많습니다.

그런데 … post에는 위와같이 템플릿 셀렉터가 없습니다. 커스텀 post_type을 만들어도 저것은 지원을 안합니다. 근본적으로 워드프레스 내부에서 템플릿을 고를수 있는 고유 권한을 post_type이 ‘page’ 인 녀석에게만 부여해 주었습니다.

왜일까요…?

글쓰기 도구중 포스트와 페이지는 태생은 비슷하지만… 그 쓰임새가 완전히 다릅니다.

정적인 한장 짜리 화면 구성에 ‘페이지’가 사용되기도 하지만,여러 포스트의 모음을 조합해서 펼쳐보이는 중심점이 되기도 합니다.
페이지라는 글쓰기 도구가 , 템플릿을 선택할수 있다는 특성을 이용해서 비어있는 페이지를 만들고 여기에 템플릿을 선택하기만 하면…페이지의 내용과는 상관없이 전혀 새로운 화면을 구성할수 있게 된다는 말입니다.

대시보드 – 설정 – 읽기 – 정적페이지 의 ‘글 페이지’ 가 대표적인 예입니다.(참고:워드프레스 정적 전면 페이지 설정하기)

더불어서 ‘정적인 능력’의 페이지에 ‘동적인 생성’이라는 배경을 심어줍니다.
웹사이트 속에서   가장 동적인 화면을 구성할수 있는 것도, 결국은 페이지 이죠.

그러니 이렇게 예쁘고 강력한 옷바꿔입기(템플릿선택) 권한을 ‘페이지’에게만 주고,홈화면이나, 블로그화면 또는 메뉴를 구성하는 중심축과 큰 가지를 만들도록하여,그 가지에 다량의 포스트(post) 또는 custom_post_type의 글들을 분류하여를 매달수 있도록 하는 거죠.
그래야 홈페이지 만드는데 통일감 있지 않겠습니까? (저만 그렇게 생각하는건 아니겠죠 ???? )

  • 테마의 폴더에 FTP로 접속하여 들어가 보면 템플릿 파일이 여러개 있습니다.
    그런데 모든 템플릿 파일을 페이지가 사용할수 있도록 다 불러오는것이 아니고,Default Template (page.php, 만약 page.php 파일이 없다면 index.php 파일)과 테마폴더 내의 템플릿파일중에 상단에 “Template Name: Full Width Page” 처럼 선언을 해준 것을 가져옵니다.그러니… 커스텀 템플릿을 내맘대로 만들어 위처럼 새 이름붙여서 해당 폴더에 넣으면..페이지 창에서 인식합니다. 나만의 템플릿이 되는 거죠.. ^^
  • 플러그인 중에 post 에도 템플릿을 선택할수 있도록 해주는 것이 있습니다. custom post template 가 그것입니다.
    ‘post 도 템플릿을 변경할수 있으면 … 참 다양한 화면을 만들거 같은데….’ 하고 생각한 적이 있는데…굳이 condition tag를 이용해서 원하는 포스트의 구조를 바꾸던것을
    single.php 파일을 내 맘대로 수정해서, 다른 이름으로 올린후, 필요한 post만 이 플러그인으로 수정본 템플릿을 선택해 사용하면 유용할거 같습니다.