SimpleTagging이라는 플러그인을 사용 중인데 – 2.3 beta1 이전에는 태그를 WP core에서 지원하지 않는다 – 이 플러그인이 2.3 beta에서 문제를 일으키고 있다.
사이드 바 부분에 보면 태그 클라우드가 있는데, 이 부분에서 각 태그별 빈도수(툴팁)와 링크가 존재하게 된다. 문제는이 링크 주소가 rein.kr/blog/?tag=tagname 형태란 것이다. 그래서 이걸 해결하려고 디비 스키마를 찬찬히 뜯어봤다.
현재 조사한 바로는 다음과 같은 형식을 가지고 있는 듯함
- wp_term_taxonomy에 이전 카테고리에 해당하는 것들과 2.3에 추가된 태그들이 모두 포함되어 있음. 그러니까 태그 이름이라거나, 내용(?)이라거나 등등. 그리고 이 테이블의 term_id가 실제로 저장되는 각 포스트 정보에서 이용됨
- 각각의 포스트들의 카테고리 혹은 태그는 wp_term_relationships에 저장되는데, object_id와 term_taxonomy_id 정보에 따라 특정 포스트가 갖는 태그/카테고리가 기록됨
- wp_terms 에는 나머지 term 테이블에서 term_id로 가리키는 실제 태그의 이름 같은 것들이 저장됨
이제 해야하는 일은, Simple Tagging Plugin; 이하 STP의 정보 + 태깅 정보를 옮기는 일인데.
- STP 에서 이미 입력해놓은 태그 정보들을 중복되지 않게(…), wp_term_taxonomy에 옮겨오고,
- 각 포스트에 태깅된 태그들의 목록을 중복없이 Orz 각각 wp_term_relationships에 추가할 것
문제는 중복성 방지 – 믿을 건 mysqldump 뿐인가(야)
덤으로 STP는 테이블 구조가 우주 단순하다. 테이블은 딱 하나 (wp_stp_tags) 뿐이고, 컬럼도 딱 2개 – 하나는 포스트의 id고, 나머지 하나는 태그 이름.
이걸 taxonomy table이랑 맵핑시켜서 이동시켜주기만 하면 되는 듯 하다.
…하지만 말이지 해결책은 더 단순했다. STP의 설정 페이지에서 태그 클라우드에 표현되는 주소를 바꾸는 옵션이 있다 – 제작자가 태그 기능이 WP core에 추가될 때나 다른 플러그인과의 문제를 고려한 것 같다. 그래서이 부분을 고쳐주니 바로 해결 Orz (현재 /?tag=를 /?stp=로 변경한 상태)
그래도 이후의 사용이랑 이전 태그들의 변경을 위해 작업은 계속하긴 해야.
PS. 사실 플러그인 문서만 제대로 읽어봤어도 – 그전에 설정 페이지만 잘 뜯어봤어도 – 알 수 있는 내용이지만, 굳이 프로그래밍 작업으로 옮겨간 것은 삽질쟁이의 본능인가 Orz
문서를 읽어보는 것보다 코드를 뜯어보는게 좀 더 두근두근하고 재밌는 일이란 말이지 -_-a
/먼산