기획자가 CMS 구조를 정할 때 가장 자주 마주치는 질문은 “이건 페이지로 만들까요, 아니면 따로 타입을 만들까요” 입니다. 답을 미리 말하면 대부분은 페이지로 충분하고, 페이지로 버틸 수 없어지는 지점은 꽤 뚜렷합니다. 그 지점을 알아보는 것이 이 회차의 전부입니다.
페이지로 버티는 구간
페이지는 워드프레스에서 가장 단순한 그릇입니다. 제목과 본문이 있고, 계층을 가질 수 있고, 메뉴에 걸 수 있습니다. 회사 소개 · 이용약관 · 문의처럼 하나뿐이고 서로 닮지 않은 화면은 페이지가 정답입니다. 여기에 굳이 구조를 만들 이유가 없습니다.
문제는 같은 모양의 것이 여러 개 생길 때 시작됩니다. 채용 공고 열두 개, 지점 안내 서른 개, 제품 사양 백 개를 페이지로 만들어도 처음에는 잘 굴러갑니다. 하지만 “서울 지점만 보여 주세요” 나 “등록이 최근인 순서로 정렬해 주세요” 라는 요구가 들어오는 순간 페이지에는 그것을 할 방법이 없습니다. 페이지는 목록으로 다루기 위한 그릇이 아니기 때문입니다.
승격을 판단하는 세 가지 신호
커스텀 포스트 타입이 자기 자리를 얻는 조건은 세 가지이고, 셋이 동시에 성립할 때 판단이 가장 분명합니다.
반복은 개수가 많다는 뜻이 아니라 채울 칸이 같다는 뜻입니다. 지점 서른 개가 전부 주소 · 전화 · 영업시간을 갖는다면 그것은 구조이고, 서른 개가 전부 다른 이야기를 한다면 그냥 페이지 서른 장입니다. 이 구분을 개수로 하면 반드시 틀립니다.
목록이 가장 실용적인 신호입니다. “이것들을 한 화면에 모아서 보여 줘야 하나?” 에 그렇다고 답하면 거의 언제나 타입입니다. 목록에는 정렬 기준과 필터가 따라오는데, 정렬과 필터는 본문이 아니라 값에만 걸 수 있습니다.
수명은 나중에 값을 합니다. 화면을 개편할 때 페이지 본문에 손으로 조판해 둔 내용은 통째로 다시 만들어야 하지만, 필드에 들어 있는 값은 새 템플릿이 그대로 받아 씁니다. 3년 쓸 사이트라면 이 차이가 가장 크게 남습니다.
타입을 만들면 따라오는 것
커스텀 포스트 타입을 선언하면 목록 · 정렬 · 검색 · 관리 화면 · REST 가 함께 딸려 옵니다. 직접 만들면 며칠씩 걸릴 것들을 워드프레스가 이미 갖고 있고, 이것이 승격의 실질적인 이득입니다.
대신 비용도 분명합니다. 주소 체계가 하나 늘고, 그 주소를 검색에 노출할지 말지를 정해야 하고, 편집자에게 관리 메뉴가 하나 더 생깁니다. 이 사이트도 무료 도구를 별도 타입으로 두고 있는데, 그 결정 덕분에 무료 도구 목록과 타입별 화면이 자동으로 생긴 대신 그 주소들이 실제로 열리는지 확인하는 일도 함께 생겼습니다. 타입 하나는 기능 하나가 아니라 주소 한 벌입니다.
구조를 정하는 기준을 더 보려면 테마 · 플러그인 아카이브를 참고하세요.
다음 회차
타입을 만들기로 했다면 다음은 그 안에 어떤 칸을 둘지입니다. 다음 회차는 필드 설계이고, 판단 기준은 하나입니다 — 편집자가 실제로 채울 수 있는 형태인가.