워드프레스 전문 개발사의 고유주소 설정 방법
가능한 방법이 아닌 올바른 방법을 찾아야 합니다.
워드프레스를 설치 후 처음으로 관리자페이지에 접속하게 되면, 좌측 메뉴에서 “글(Posts)”이라는 기본 포스트타입(Default Post Type)을 확인할 수 있습니다. 그리고 이 기본 포스트타입에는 “카테고리(Categories)”와 “태그(Tags)”라는 2가지의 분류 기준(Taxonomy)이 제공됩니다.
만약 “커스텀 포스트타입(CPT, Custom Post Type)”에 대해서 들어본 적이 없다면, 여러분은 모든 콘텐츠를 이 기본 포스트타입에서 작성하고 있을 것입니다. 카테고리를 적절하게 생성해가면서 말이죠.
하지만 커스텀 포스트타입 기능을 이용하면 다른 성격의 콘텐츠를 포스트타입으로 분리해서 관리할 수 있습니다. 예를 들어 크리에이티브밴드는 워드프레스와 관련된 다양한 글들은 “글(Posts)”에 작성하고, 구축 사례 콘텐츠는 “Works” 라는 커스텀 포스트타입을 생성하여 등록하고 있습니다. 그리고 Works에 Areas라는 분류 기준을 새롭게 만들어 고객사가 속한 산업을 구분하는 용도로 사용하고 있습니다.
고유주소 설정 방법을 소개하기 앞서 포스트타입에 대해서 설명하는 이유는 기본 포스트타입과 커스텀 포스트타입의 고유주소 구성 방식에 차이가 있기 때문입니다.
기본 포스트타입
많은 기업들은 워드프레스로 구축한 웹사이트에 블로그(Blog)란 메뉴를 만들어 자신의 콘텐츠를 보여주고자 합니다. 하지만 그에 맞는 이상적인 고유주소 체계를 구성하는 일이 간단하지는 않습니다. 우선은 처음 워드프레스를 설치 또는 개설한 웹사이트의 기본 “고유주소 구조(Permalink Structure)”를 살펴보도록 하죠. 고유주소는 Plain 에서 Post name으로 변경1했으며, 어떤 플러그인도 설치되어 있지 않습니다.2
계층 구조의 카테고리를 만들고 글을 작성했다면, 아래와 같은 구조가 기본으로 생성됩니다. (물론 계층 구조의 카테고리를 생성하는 것은 권장하지 않습니다. 보다 세부적인 구분이 필요하다면 태그3를 이용하는 것이 좋습니다.)
구분 | 고유주소 |
---|---|
블로그 상위 카테고리 목록 페이지 | https://domain.com/category/parent-category/ |
블로그 하위 카테고리 목록 페이지 | https://domain.com/category/parent-category/child-category/ |
블로그 상세 페이지 | https://domain.com/hello-world/ |
고유주소의 카테고리 값(Term) 앞에 /category/라는 분류체계 명이 구조가 추가되었습니다. 하지만 원하는 구조는 아래와 같을 것입니다.
구분 | 고유주소 |
---|---|
블로그 메인 페이지 (모든 카테고리 최신 목록) | https://domain.com/blog/ |
블로그 상위 카테고리 목록 페이지 | https://domain.com/blog/parent-category/ |
블로그 하위 카테고리 목록 페이지 | https://domain.com/blog/parent-category/child-category/ |
블로그 상세 페이지 | https://domain.com/hello-world/ |
블로그 메인 페이지에 ‘하이라이트 슬라이드’, ‘큐레이션 캐러셀’, ‘최신 글 목록’ 등으로 구성하려는 경우에는 새로운 페이지를 생성하여 슬러그를 blog로 저장하고 필요한 요소들을 페이지에 추가해야 합니다.
그리고 “관리자페이지 > 설정 > 고유주소”로 이동하여 Common Settings 아래 위치한 Optional의 Category base에 blog를 입력해줍니다. 이렇게 할 경우, 앞서 확인한 고유주소의 /category/ 부분이 /blog/로 바뀌게 됩니다. /category/가 대체되기 때문에 콘텐츠 상세 페이지가 아닌 카테고리 목록 페이지에서만 이 옵션이 적용됩니다.
만약 블로그 메인 페이지가 있더라도 카테고리 구분 없이 전체 콘텐츠 목록을 불러오는 페이지가 필요하다면, 처음 워드프레스 설치 또는 개설 시 Uncategorized로 되어 있는 기본 카테고리 값(term)을 All로 변경하는 방법을 추천드립니다. 기본 카테고리 값의 경우 아무런 카테고리를 선택하지 않은 콘텐츠에 자동으로 지정되기 때문입니다.
단, 나머지 카테고리를 All의 하위 카테고리로 지정하지는 않습니다. 만약 하위 카테고리로 등록한 경우 /blog/all/parent-category/child-category/ 와 같은 어색한 구조로 표시되기 때문입니다. 그 외에도 카테고리를 불러오는 함수를 수정하여 all은 제외시킬 필요가 있습니다.
<?php
// 현재 포스트의 카테고리를 가져옵니다.
$categories = get_the_category();
// 제외할 카테고리의 슬러그를 지정합니다.
$exclude_category_slug = 'all';
// 제외할 카테고리가 있는 경우에만 출력합니다.
if ($categories) {
foreach ($categories as $category) {
// 특정 카테고리를 제외합니다.
if ($category->slug !== $exclude_category_slug) {
// 각 카테고리에 대한 출력 또는 링크를 작성합니다.
echo '<a href="' . esc_url(get_category_link($category->term_id)) . '">' . esc_html($category->name) . '</a>';
}
}
}
?>
그런데 이 방법 추천하지 않습니다. 만약 All을 제외한 카테고리가 계층 구조를 이루고 있고, 또 이 계층 구조를 화면에서도 보여주고자 한다면 좀 복잡한 문제가 발생하기 때문입니다. 카테고리의 구성과 관련해서는 다음 번 글에서 다시 이야기하도록 하겠습니다.
블로그 상세 페이지의 고유주소에 카테고리가 표시되는 것은 권장하지 않습니다. 카테고리 변경 시 색인된 모든 싱글 URL에 리디렉션 처리가 필요할 수 있기 때문입니다.
커스텀 포스트타입
구분 | 고유주소 |
---|---|
Work 목록 페이지 (전체 Area) | https://domain.com/work/ |
Work 상세 페이지 | https://domain.com/work/hello-work/ |
Work 분류기준(Area) 목록 페이지 | https://domain.com/area/media-company/ |
기본 포스트타입의 상세 페이지 고유주소에서는 사실 /post/가 생략됐다고 생각하면 됩니다. 기본이기 때문에 말이죠. 하지만 커스텀 포스트타입의 경우에는 커스텀 포스트타입의 명칭이 노출됩니다. 그리고 /category/를 /blog/로 적용했던 옵션을 사용할 수 없습니다.
결론
크리에이티브밴드가 경험해보지 못한 다양한 적용 방법이 있을 수 있습니다. 관련해서 좋은 의견이 있다면 댓글에 남겨주세요. 다만 가능하다가 아니라 적절하다 또는 올바르다의 기준으로 판단을 내리면서 선택하면 좋을 것 같습니다.
- 고유주소를 Plain으로 설정하는 것은 고려하지 않습니다. 검색엔진최적화를 위해서도 적절하지 않습니다. ↩︎
- 고유주소 구조에 영향을 주는 요인이 없다는 것을 의미합니다. Yoast SEO의 일부 옵션은 고유주소 구조에 영향을 주기도 합니다. ↩︎
- 상향식 분류기준인 태그는 단순 키워드들의 집합이 아니라 카테고리에서 정의하지 않은 새로운 분류 기준이라고 생각하면 좋습니다. ↩︎