안녕하세요. 린치핀소프트 한광희입니다.

 

저는 워드프레스를 개발하면서 가끔 워드프레스의 많은 기능들 중에 이것은 정말 핵심중의 핵심으로 상을 주어도 되겠다~ 하고 생각하는 구조가 CPT(Custom Post Type)입니다.

이 CPT의 확장성과 그 편의성은 워드프레스 테마와 플러그인을 개발하면서 정말 없어서는 안될 구조라고 자주 생각합니다.

이 CPT뿐만 아니라 워드프레스 고유의 포스트 타입들에 대해서 알아보도록하겠습니다.

 

워드프레스는 기본적으로 다음의 5가지 포스트 타입을 가지고 있습니다.

  • Post
  • Page
  • Attachment
  • Revision
  • Naviagtion Menu

이 5가지는 워드프레스 고유의 포스트 타입(Post Type)으로서 이미 예약되어, 워드프레스를 사요할때 그 기본이 되고 있습니다.

저는 처음에 워드프레스 시스템을 공부할때 위의 5가지를 지칭하는 “포스트 타입”과 우리가 블로그를 작성할때 “포스트”와 조금 헷갈렸는데요. 정확히 말하면 “포스트(글)”도 위의 “포스트 타입”중의 하나입니다!

1.포스트(글) : 보통의 블로그에 작성되는 포스트와 동일합니다.

2.페이지 : 페이지도 우리가 워드프레스 설치시에 기본적으로 작성할 수 있는 콘텐츠 중의 하나인 “페이지”가 맞습니다.

3. Attachement(첨부 콘텐츠) : 이는 보통 “미디어 라이브러리”를 통해 업로드된 파일들을 의미합니다. 보통 블로그형식의 글일때는 “사진”의 경우가 많습니다.

4. Revision(리비전) : 리비전은 포스트를 작성할때 공개하기,초고상태로 발행시에 저장시점에 저장되었던 과거의 상태들을 의미합니다. 과거의 시점으로 콘텐츠의 상태를 바꾸거나 할때 좋은 기능이죠.

5. Navigation Menu(네비게이션 메뉴) : 이는 보통 “외모”->”메뉴” 를 통해 우리가 워드프레스의 메뉴를 구성할때 해당하는 메뉴의 각각 아이템들이 저장됩니다. 워드프레스는 메뉴를 복수를 발행하여 운용될때도 있기 때문에 이렇게 네비게이션 메뉴로 저장되면 시스템 운용에는 조금 더 편리하겠죠.

 

6. Custom Post Type(사용자정의형 포스트 타입)

이 글의 시작에 제가 정말 좋아하는 워드프레스 기능중의 하나라고 소개한 CPT입니다.

Custom Post Type을 줄여서 CPT라고 보통 말합니다.

사실 위의 “포스트(글)” 과 “페이지”는 주요 기능들의 집합체로서 정형화 시킨 예라고 이해하는편이 좋습니다.

포스트(글) : 태그/카테고리/글형식이 허용되며 리비전 기능이 지원됨

페이지: 계층구조가 가능하며 템플릿을 이용하여 페이지 서식과 스타일을 지정할수 있음

 

위처럼 보통 워드프레스에서는 포스트나 페이지가 이용되는 주요 영역에서도 차이가 있지만, 포스트와 페이지 그 자체에서 허용되는 기능에서의 차이도 있습니다.

즉, 포스트란 개체는 A,B,C… 등등의 기능들의 집합이고 펟이지는 H,I,J,K… 등등의 기능들의 집합이라고 쉽게 생각해볼수도 있습니다.

이렇듯 포스트와 페이지처럼 우리가 워드프레스를 이용할때 페이지와 포스트의 특정기능을 재사용하고 싶을때도 있고 특수한 기능을 추가하거나, 페이지와 포스트와 별개로 콘텐츠를 관리하고 싶을때도 있습니다.

 

screenshot-52.68.215.28 2015-08-10 22-39-07

위의 사진은 현재 제가 운용하고 있는 한 워드프레스 중에 데이터베이스에서 POST_TYPE 만 나열시켜 보았습니다.

앞서 설명 드린 포스트타입 이외에도 spucpt,popup,kobard,wpcf7_contact_form 등이 있는데 이는 현재 운용되고 있는 워드프레스의 테마나 플러그인에서 정의되어 사용되고 있는 “CPT(custom post type)”들입니다.

 

예를 들면 “popup” CPT는 제가 이용하는 팝업창 생성 플러그인의 CPT이고, “wpcf7_contact_fom” CPT는 콘택트폼의 CPT입니다.

만약 전자상거래 쇼핑몰 플러그인중에 “Woocommerce”라는 플러그인을 이용하여 사용하면 “product”라는 CPT가 데이터베이스에 생성되어 사용될 겁니다.

 

뉴스나 매거진등을 만든다면 “article”이라는 CPT를 만들고 해당 article에서 지원해야 하는 기능들을 설정하고 추가적인 속성들을 구성하는등, 내 워드프레스 시스템에 적합하고 맞는 콘텐츠를 구성할 수 있습니다. 이때 포스트타입뿐만 아니라 Taxonomy(택소노미)라고 하는 카테고리와 태그등도 추가할수 있는데, 이렇게 되면 더욱 강력하고 편의적인 콘텐츠 시스템을 만들 수 있습니다.

 

저는 워드프레스 시스템 개발 프로젝트를 할때 데이터베이스를 팀원과 먼저 설계하는데 보통은 “프로젝트의 요구사항 분석”과 시나리오들이 구체화 되면 팀원들과 CPT설계작업을 합니다^^

이때는 보통 워드프레스의 데이터베이스를 잘 이용할수있는지, 아니면 추가적으로 데이터베이스를 구성해야하는지 등등 워드프레스의 확장성과 효용성을 기반으로 시스템을 운용할수있도록 구성합니다.

 

제 경험상 많은 부분은 워드프레스의 확장성 좋은 데이터베이스를 이용해서 CPT를 설계하고 충분히 운용할 수 있었습니다.

 

다음 글에서는 CPT와 Taxonomy를 생성하는 방법에 대해서 이야기하겠습니다.