케이보드 댓글삭제 감소 포인트 관련 문의

댓글을 지우려면 댓글을 달았을때 받았던 포인트가 삭감되도록 설정해놓았습니다

 

작성자가 쓴 댓글에 다른 회원이 대댓글(답글)을 쓴 상황에서 만약 작성자가 자신의 댓글을 삭제한 경우 대댓글까지 모두 삭제는데요,

이 경우에 자신이 댓글을 작성했을때 받았던 포인트에서 플러스로 포인트가 더 깎이게 만들수있을까요??

 

댓글을 삭제하면 10포인트가 깎이는 상황에서 만약 대댓글이 2개 달려있다면

나의 댓글과 대댓글 2개, 즉 총 3개의 댓글을 삭제하는거니까 30포인트가 깎였으면 좋겠습니다

가능할까요??ㅠㅠ

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    KBoard 플러그인의 포인트설정 기능을 활용 중이신지요?

    대댓글 삭제 시 댓글삭제 감소 포인트만큼 각 사용자의 포인트를 반환하게 하시려면

    아래의 코드를 활용해보시겠어요?

    add_action('kboard_comments_delete', 'kboard_comments_delete_20200818', 10, 3);
    function kboard_comments_delete_20200818($comment_uid, $content_uid, $board){
    	global $wpdb;
    	
    	if($board->id == '1'){ // 실제 게시판 id로 적용해주세요.
    		$results = $wpdb->get_results("SELECT * FROM `{$wpdb->prefix}kboard_comments` WHERE `parent_uid`='{$comment_uid}'");
    		foreach($results as $children_comment){
    			$comment = new KBComment();
    			$comment->initWithUID($children_comment->uid);
    			if($comment->uid && $comment->getUserID()){
    				mycred_add('kboard_comment_delete_children', $comment->getUserID(), $board->meta->comment_delete_down_point*-1, 'KBoard 대댓글 삭제 포인트', $comment->uid);
    				kboard_comments_delete_20200818($comment->uid, $content_uid, $board);
    			}
    		}
    	}
    }

    위의 코드에서 $board->id == '1' 부분은 실제 게시판 id로 적용해주세요.

     

    테마의 functions.php 파일에 코드를 추가하거나 Code Snippets 플러그인을 사용해서 코드를 추가할 수 있습니다.

    고맙습니다.

  • 답변 감사합니다!!

    그런데 대댓글이 달린 댓글을 삭제했을때 삭제한 사람, 즉 부모댓글의 작성자가 대댓글의 댓글삭제 감소 포인트까지 다 부담하게 만드는 방법은 없는건지 궁금합니다ㅠㅠ 대댓글을 단 회원의 포인트는 변하는게 없고 부모댓글 작성자만 포인트가 감소되는 방법으로요

     

    그리고 위의 코드를 적용한 상태에서 댓글을 삭제할때 뜨는 "삭제 하시겠습니까?" 라는 메세지 앞쪽에

    "대댓글이 달려있는 경우에는 대댓글 개수만큼의 포인트가 추가로 차감됩니다."

    라는 경고 문구를 추가 할 수 있을까요??

    그냥 평범하게 댓글 하나를 지울때에는 "삭제 하시겠습니까?" 라는 메세지만 뜨지만, 대댓글이 있는 댓글을 삭제할때만 추가 문구가 입력되었으면 좋겠습니다

  • 말씀하신 것처럼 적용하시려면

    기존의 코드 대신 아래의 코드로 교체해보세요.

    add_action('kboard_comments_delete', 'kboard_comments_delete_20200818', 10, 3);
    function kboard_comments_delete_20200818($comment_uid, $content_uid, $board){
    	if($board->id == '1'){ // 실제 게시판 id로 적용해주세요.
    		$comment = new KBComment();
    		$comment->initWithUID($comment_uid);
    		if($comment->uid && $comment->getUserID()){
    			kboard_comments_delete_children_20200818($comment->getUserID(), $comment->uid, $board);
    		}
    	}
    }
    
    function kboard_comments_delete_children_20200818($user_id, $comment_uid, $board){
    	global $wpdb;
    	
    	$results = $wpdb->get_results("SELECT * FROM `{$wpdb->prefix}kboard_comments` WHERE `parent_uid`='{$comment_uid}'");
    
    	foreach($results as $children_comment){
    		if($children_comment->uid){
    			mycred_add('kboard_comment_delete_children', $user_id, $board->meta->comment_delete_down_point*-1, 'KBoard 대댓글 삭제 포인트', $children_comment->uid);
    			kboard_comments_delete_children_20200818($user_id, $children_comment->uid, $board);
    		}
    	}
    }

     

    댓글 삭제 시 표시되는 alert 창을 대댓글이 있을 때와 없을 때 다르게 표시되게 하시려면

    FTP로 접속해서 /wp-content/plugins/kboard-comments/skin/사용중인스킨/list-template.php 파일에

    아래의 코드를 찾아서

    <button type="button" class="comments-button-action comments-button-delete" onclick="kboard_comments_delete('<?php echo $commentURL->getDeleteURL()?>');" title="<?php echo __('Delete', 'kboard-comments')?>"><?php echo __('Delete', 'kboard-comments')?></button>

    아래의 코드로 교체해보세요.

    <?php
    global $wpdb;
    $child_count = $wpdb->get_var("SELECT COUNT(*) FROM `{$wpdb->prefix}kboard_comments` WHERE `parent_uid`='{$comment->uid}'");
    ?>
    <button type="button" class="comments-button-action comments-button-delete" onclick="kboard_comments_delete('<?php echo $commentURL->getDeleteURL()?>', <?php echo $child_count?>);" title="<?php echo __('Delete', 'kboard-comments')?>"><?php echo __('Delete', 'kboard-comments')?></button>

     

    /wp-content/plugins/kboard-comments/skin/사용중인스킨/script.js 파일에

    아래의 코드를 찾아서

    function kboard_comments_delete(url){
    	if(confirm(kboard_comments_localize_strings.are_you_sure_you_want_to_delete)){
    		window.location.href = url;
    	}
    	return false;
    }

    아래의 코드로 교체해보세요.

    function kboard_comments_delete(url, child_count){
    	if(child_count){
    		if(confirm(kboard_comments_localize_strings.are_you_sure_you_want_to_delete + "\n대댓글이 달려있는 경우에는 대댓글 개수만큼의 포인트가 추가로 차감됩니다.")){
    			window.location.href = url;
    		}
    	}
    	else{
    		if(confirm(kboard_comments_localize_strings.are_you_sure_you_want_to_delete)){
    			window.location.href = url;
    		}
    	}
    	return false;
    }

    고맙습니다.

  • 항상 친절한 답변 너무 감사드려요♥

    알려주신대로 적용했더니 부모댓글의 작성자만 포인트가 차감되게 만드는 것은 잘 적용되었습니다♥♥

    그런데 댓글 삭제 시 표시되는 alert 창이 대댓글이 있을 때와 없을 때가 다르게 표시되지 않고 있어요ㅠㅠ

    가르쳐주신 코드로 모두 교체하였는데도 "삭제 하시겠습니까?" 라는 메세지만 뜨고 있습니다ㅠㅠㅠㅠㅠ

  • 코드 상에는 문제없는 듯합니다.

    저희 쪽 테스트 서버에서는 정상적으로 동작하는 것을 확인했습니다.

    코드를 제대로 수정하셨는지 확인해보시고

    브라우저의 캐시도 비우신 후에 확인해보시겠어요?

    크롬 브라우저에서 강력 새로고침 단축키는 Ctrl + Shift + R 입니다.

    고맙습니다.

  • 다시 차근차근 적용하니까 정상적으로 작동되네요!!

    너무 감사합니다♥♥♥

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기