내 블로그의 카테고리 구조는 별로 좋지 않다. 그래서 최상위 카테고리만 남기고 서브카테고리는 모두 태그로 변환하기로 결심했다. 그런데, 웹서버 > PHP > PHPUnit 형태의 카테고리에 속한 글이 있다고 치자. 나는 이런 경우 PHPUnit에만 글을 포함시켜 뒀다. 워드프레스는 웹서버 카테고리 목록을 불러오면 자동으로 하위 카테고리에 속한 글들을 불러 오기 때문에 문제될 게 없었다.

그런데 카테고리를 그대로 태그로 변환하면, 위에서 예로 든 글의 경우엔 아래와 같은 문제가 생긴다.

  • PHPUnit이라는 태그만 갖게 되고, PHP라는 태그는 갖지 못한다.
  • 웹서버 카테고리에서 글이 사라지고 카테고리가 없는 글이 된다.

그래서 아래와 같은 절차를 밟는 코드를 만들어 해결했다.

  1. 모든 부모 카테고리에 글을 포함시킨다. 즉, 위에서 예로 든 글의 경우 웹서버와 PHP 카테고리에도 일일이 글을 포함시키도록 한다.
  2. 최상위 카테고리가 아닌 서브카테고리를 일괄적으로 태그로 변경한다. 위에서 예로 든 글의 경우 PHP와 PHPUnit이 태그로 변할 것이다.

그래서 카테고리를 1단계만 남게 됐다. 서브 카테고리는 없다. 중간 규모의 분류는 태그로 하게 됐다. 코드는 아래 참고.