Technote

테마 · 플러그인 입문

연재 콘텐츠 모델링 8부 중 1부

커스텀 포스트 타입은 언제 자기 자리를 얻나

대부분은 페이지로 충분합니다. 다만 페이지로 버틸 수 없어지는 지점은 꽤 뚜렷하고, 그 신호는 개수가 아니라 "목록으로 다뤄야 하는가" 입니다.

기획자가 CMS 구조를 정할 때 가장 자주 마주치는 질문은 “이건 페이지로 만들까요, 아니면 따로 타입을 만들까요” 입니다. 답을 미리 말하면 대부분은 페이지로 충분하고, 페이지로 버틸 수 없어지는 지점은 꽤 뚜렷합니다. 그 지점을 알아보는 것이 이 회차의 전부입니다.

페이지로 버티는 구간

페이지는 워드프레스에서 가장 단순한 그릇입니다. 제목과 본문이 있고, 계층을 가질 수 있고, 메뉴에 걸 수 있습니다. 회사 소개 · 이용약관 · 문의처럼 하나뿐이고 서로 닮지 않은 화면은 페이지가 정답입니다. 여기에 굳이 구조를 만들 이유가 없습니다.

문제는 같은 모양의 것이 여러 개 생길 때 시작됩니다. 채용 공고 열두 개, 지점 안내 서른 개, 제품 사양 백 개를 페이지로 만들어도 처음에는 잘 굴러갑니다. 하지만 “서울 지점만 보여 주세요” 나 “등록이 최근인 순서로 정렬해 주세요” 라는 요구가 들어오는 순간 페이지에는 그것을 할 방법이 없습니다. 페이지는 목록으로 다루기 위한 그릇이 아니기 때문입니다.

승격을 판단하는 세 가지 신호

커스텀 포스트 타입이 자기 자리를 얻는 조건은 세 가지이고, 셋이 동시에 성립할 때 판단이 가장 분명합니다.

승격 판정 — 위 세 줄이 함께 성립하면 타입을 만든다

반복은 개수가 많다는 뜻이 아니라 채울 칸이 같다는 뜻입니다. 지점 서른 개가 전부 주소 · 전화 · 영업시간을 갖는다면 그것은 구조이고, 서른 개가 전부 다른 이야기를 한다면 그냥 페이지 서른 장입니다. 이 구분을 개수로 하면 반드시 틀립니다.

목록이 가장 실용적인 신호입니다. “이것들을 한 화면에 모아서 보여 줘야 하나?” 에 그렇다고 답하면 거의 언제나 타입입니다. 목록에는 정렬 기준과 필터가 따라오는데, 정렬과 필터는 본문이 아니라 값에만 걸 수 있습니다.

수명은 나중에 값을 합니다. 화면을 개편할 때 페이지 본문에 손으로 조판해 둔 내용은 통째로 다시 만들어야 하지만, 필드에 들어 있는 값은 새 템플릿이 그대로 받아 씁니다. 3년 쓸 사이트라면 이 차이가 가장 크게 남습니다.

타입을 만들면 따라오는 것

커스텀 포스트 타입을 선언하면 목록 · 정렬 · 검색 · 관리 화면 · REST 가 함께 딸려 옵니다. 직접 만들면 며칠씩 걸릴 것들을 워드프레스가 이미 갖고 있고, 이것이 승격의 실질적인 이득입니다.

대신 비용도 분명합니다. 주소 체계가 하나 늘고, 그 주소를 검색에 노출할지 말지를 정해야 하고, 편집자에게 관리 메뉴가 하나 더 생깁니다. 이 사이트도 무료 도구를 별도 타입으로 두고 있는데, 그 결정 덕분에 무료 도구 목록과 타입별 화면이 자동으로 생긴 대신 그 주소들이 실제로 열리는지 확인하는 일도 함께 생겼습니다. 타입 하나는 기능 하나가 아니라 주소 한 벌입니다.

구조를 정하는 기준을 더 보려면 테마 · 플러그인 아카이브를 참고하세요.

다음 회차

타입을 만들기로 했다면 다음은 그 안에 어떤 칸을 둘지입니다. 다음 회차는 필드 설계이고, 판단 기준은 하나입니다 — 편집자가 실제로 채울 수 있는 형태인가.

이 주제의 다른 글

노하우 목록으로

테마 · 플러그인 입문

업데이트가 깨지는 진짜 이유는 코어가 아닙니다

"지난번에 올렸다가 깨져서" 미루고 있다면, 그때 깨진 것이 무엇이었는지 다시 볼 필요가 있습니다. 원인을 바르게 지목하면 다음 업데이트의 준비 방법이 달라집니다.

운영 · 관리자 4분 읽기

테마 · 플러그인 실무

템플릿 안의 보조 쿼리 — reset 을 빠뜨리면

관련 글 목록을 넣었더니 그 아래의 모든 것이 엉뚱한 글을 가리킵니다. 템플릿 문제처럼 보이지만 원인은 빠뜨린 한 줄입니다.

개발자 5분 읽기

₩270,000 · 신청하기