커뮤니티 검색을 통해 게시글을 읽을 때마다 포인트가 차감되는 코드를 찾았습니다
add_action('kboard_skin_header', 'my_kboard_skin_footer', 10, 1);
function my_kboard_skin_footer($builder){
$board = $builder->board;
if($board->id == '1'){ // 실제 게시판 id로 적용해주세요.
$content_uid = kboard_uid();
$content = new KBContent();
$content->initWithUID($content_uid);
if($content->uid && $content->member_uid != get_current_user_id()){
$log_args['user_id'] = get_current_user_id();
$log_args['ref'] = 'document_read_down_point';
$log_args['ref_id'] = $content->uid;
$log = new myCRED_Query_Log($log_args);
$url = new KBUrl();
$balance = mycred_get_users_balance(get_current_user_id());
if($board->meta->document_read_down_point > $balance){
do_action('kboard_cannot_read_document', 'not_enough_points', $url->set('mod', 'list')->toString(), $content, $board, $builder);
}
else{
$point = intval(get_user_meta(get_current_user_id(), 'kboard_document_mycred_point', true));
update_user_meta(get_current_user_id(), 'kboard_document_mycred_point', $point + ($board->meta->document_read_down_point*-1));
mycred_add('document_read_down_point', get_current_user_id(), ($board->meta->document_read_down_point*-1), __('Reading decrease points', 'kboard'), $content->uid);
}
}
}
}
처음 한번만 포인트가 차감되지 않고 글을 읽을 때마다 포인트가 차감되게 적용시킨 것은 만족스러운데요,
댓글을 작성했을때 페이지가 새로고침되면서 포인트가 한번 더 차감이 되더라구요......(글읽기 감소 포인트를 5포인트로 설정해놓았는데, 게시글 읽은 다음에 댓글을 단 경우에는 페이지 새로고침 때문에 총 10포인트가 차감되는 상황)
새로고침 할때마다 포인트가 차감되는 코드이기 때문에 어쩔 수 없는건가요???
댓글을 단 이후에 게시글의 조회수는 변함이 없는데 포인트는 이중으로 차감되는 문제가 발생하여 질문합니다
안녕하세요~^^
kboard_skin_header 액션은 게시판이 설치된 페이지가 로드될 때마다 실행됩니다.
KBoard에서 조회수는 세션으로 체크하고 있습니다.
글을 읽으면 조회수가 올라가고 두 번째부터는 올라가지 않습니다.
하지만 브라우저를 껐다 켜거나 다른 장소에서 읽으면 또 올라갑니다.
세션이나 쿠키를 비워도 올라갑니다.
그렇기 때문에 댓글을 달면 페이지가 새로고침 되면서 적용하신 코드로 인해 포인트가 차감됩니다.
고맙습니다.