워드프레스에 입력한 태그가 사라지는 문제 해결방법


제롬 키워드 플러그인( Jerome’s Keywords Plugin)을 이용하면 제 태그 구름 처럼 워드프레스에 태깅을 하고 태그 구름을 표시할 수 있습니다. 이 제롬키워드의 소스를 약간 수정하면 태그 구름에 글의 갯수를 표시 할 수도 있고, 제가 간단하게 만든 Change Tag WordPress plugin 1.0 를 이용하면 태그이름을 한꺼번에 바꿀 수도 있습니다.

태그가 사라지는 이유

그런데, 이상하게도 언제부턴가 시간이 지나면 입력했던 태그 내용들이 사라지는 것을 발견했습니다. 그 이유를 찾기 위해서 약 오랫도안 동안 틈 날 때 마다 검색을 해서 찾아 보았습니다. 그러다가 어제 우연히 어떤 블로그에서 해결책을 찾았는데, 그것은 워드프레스 2.1에서 제롬 키워드 수정하기 라는 글이었습니다.

이 글에서는 저와 같이 입력한 내용이 사라진다고 하는데, 댓글을 승인하면 태그가 사라진다고 합니다. 그 원인으로 태그를 수정할 때 제롬키워드가 ‘edit-post’ 를 후킹해서 수정합니다. 그런데 댓글을 수정할 때에도 제롬 키워드의 수정하는 부분이 동작한다고 합니다. 댓글을 승인하거나 댓글이 등록될 때, 제롬 키워드의 플러그인이 동작해서 키워드를 공백으로 저장하게 되는 모양입니다.

그러고 보니 태그가 사라지는 글들은 댓글이 있었던 글이였던 것도 같습니다. 제가 댓글을 올려 보고 테스트를 해보았는데, 정말 댓글이 등록되면 태그가 사라졌습니다.

Jerome 플러그인 수정하기

수정해야 할 제롬 키워드의 플러그인의 소스는 간단합니다.

1. 제롬 키워드 플러그인을 백업해 놓습니다.
파일이름은 jeromes-keywords.php 입니다. 보통 /wp-content/plugins/ 이 디렉토리 안에 있습니다.

2. 워드프레스의 플러그인 폴더에 업로드한 제롬 키워드 플러그인을 열어서 614라인  쯤에 있는 ‘keywords_update’ 함수를 찾습니다.

3. keyword_update 함수를 아래 소스로 바꿔서 저장합니다.

function keywords_update($id) {

//isset returns true if the value exists, even if it’s empty.

if(isset($_REQUEST[‘keywords_list’])) {

// remove old value

delete_post_meta($id, KEYWORDS_META);

 

// clean up keywords list & save

$keyword_list = "";

$post_keywords = explode(",", $_REQUEST[‘keywords_list’]);

foreach($post_keywords as $keyword) {

if ( !empty($keyword ) ) {

if ( !empty($keyword_list) )

$keyword_list .= ",";

$keyword_list .= trim($keyword);

}

}

 

if (!empty($keyword_list) )

add_post_meta($id, KEYWORDS_META, $keyword_list);

}

}

소스에서 변경된 부분은 if(isset($_REQUEST[‘keywords_list’])) { } 를 추가한 것입니다.
이 부분은 댓글이 아니라 글을 수정할 때에만 제롬 키워드 플러그인 수정이 동작하게 합니다.

 

저도 제롬 소스 코드를 좀 꼼꼼히 볼 걸 그랬나 봅니다.

이제 힘들게 입력한 태그들이 사라지지 않기를 기대 합니다.

 

 







제휴 링크로 구매 시 제휴마케팅 활동의 일환으로 일정액의 수수료를 지급받아 콘텐츠를 제작하는데 큰 도움이 됩니다.



도움이 되셨다면, 댓글이나 소중한 커피 한 잔 부탁드려도 될까요?

커피 사주기
























당신이 좋아할 만한 글







스쿼트스타: 스쿼트 카운터

스쿼트하면 자동으로 횟수 측정, 횟수를 음성으로 세주고 스쿼트 속도 등의 분석, 일별/월별/연도별 운동 기록 관리









3 Comments

Add a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다