안녕하세요.
mycred과 함께 게시판 잘 사용하고 있습니다!
얼마 전부터 해당 시간에 달린 댓글이 없음에도 댓글작성으로 포인트가 적립되는 이상한 로그를 발견해서 고민이 많았는데요.
알고보니 A라는 댓글에 B라는 대댓글을 달고 A를 지워버리면 B까지 같이 삭제되면서
포인트는 A댓글을 삭제한 것만 차감되더라구요.
대댓글을 10개 달고 본 댓글을 지워버리면 1포인트만 차감되고 10포인트는 그냥 남아있는 것이죠ㅠㅠ
그래서 댓글을 삭제할 때 대댓글은 남아있게 해야 할 것 같은데, 따로 설정하는 방법이 있는지 궁금합니다.
버그는 아니며 댓글의 답글에 대해서는 훅(hook)이 없어서 그렇습니다.
/wp-content/plugins/kboard-comments/class/KBComment.class.php 파일을 수정해주시면 답글의 경우에도 적용이 가능합니다.
아래 코드를 찾아서 굵게 표시된 코드를 추가해주시면 될 듯합니다.
public function deleteChildren($parent_uid=''){
global $wpdb;
if($this->uid){
if($parent_uid){
$parent_uid = intval($parent_uid);
}
else{
$parent_uid = $this->uid;
}
$results = $wpdb->get_results("SELECT * FROM `{$wpdb->prefix}kboard_comments` WHERE `parent_uid`='{$parent_uid}'");
foreach($results as $key=>$child){
do_action('kboard_comments_delete', $child->uid, $this->content_uid);
$wpdb->query("DELETE FROM `{$wpdb->prefix}kboard_comments` WHERE `uid`='{$child->uid}'");
$wpdb->query("DELETE FROM `{$wpdb->prefix}kboard_comments_option` WHERE `comment_uid`='{$this->uid}'");
// 게시물의 댓글 숫자를 변경한다.
$wpdb->query("UPDATE `{$wpdb->prefix}kboard_board_content` SET `comment`=`comment`-1 WHERE `uid`='{$this->content_uid}'");
// 자식 댓글을 삭제한다.
$this->deleteChildren($child->uid);
}
}
}
본인이 삭제했다면 포인트 차감이 되지만,
그 경우는 본인이 삭제한 게 아니기 때문에 차감이 안되는 거죠.
열심히 단 댓글이 타인에 의해 지워졌을 경우 포인트까지 차감되면 싫어하는 사용자도 있을 수 있으니,
어떤 게 좋을지는 고민해보시고 의견 주세요^^
말씀하신
댓글을 삭제하면 답글은 남아있도록 하는 기능을 추가해서 업데이트 하도록 하겠습니다.
해당 기능을 활성화 비활성화 할 수 있도록 하겠습니다.
항상 감사합니다 ^0^