댓글 관련 비밀글 기능 문의

안녕하세요.

워드프레스 게시판 KBoard(케이보드) 사용중입니다.

댓글 작성 시 비밀글 체크하기 (관리자만 볼 수 있도록) 기능을 넣을 수 있을까요?

 

관련 코드 안내해주시면 감사하겠습니다! 

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    최신 버전의 KBoard 게시판 플러그인과 댓글 플러그인에서 동작하는

    댓글 비밀글 예제 코드를 작성해봤습니다.

     

    테마 쪽 functions.php 파일 하단에

    아래의 코드를 추가해서 확인해보시겠어요?

    add_action('kboard_comments_field', 'my_kboard_comments_field', 10, 4);
    function my_kboard_comments_field($field_html, $board, $content_uid, $commentBuilder){
    	if($board->id == '1'){ // 실제 게시판 id로 적용해주세요.
    		?>
    		<input type="checkbox" id="comment_option_secret" name="comment_option_secret" value="true">
    		<label for="comment_option_secret">비밀댓글</label>
    		<?php
    	}
    }
    
    add_filter('kboard_comments_content', 'my_kboard_comments_content', 10, 3);
    function my_kboard_comments_content($content, $comment_uid, $content_uid){
    	$comment = new KBComment();
    	$comment->initWithUID($comment_uid);
    	
    	$board = $comment->getBoard();
    	
    	if(!$board->isAdmin() && $comment->option->secret && $board->id == '1'){ // 실제 게시판 id로 적용해주세요.
    		$user_id = get_current_user_id();
    		if(!$user_id || $user_id != $comment->user_uid){
    			$content = '관리자만 볼 수 있습니다.';
    		}
    	}
    	return $content;
    }

     

    kboard_comments_field 액션을 활용해서 댓글 입력 필드 뒤에 HTML 코드를 추가하고

    kboard_comments_content 필터를 활용해서 댓글 내용을 관리자가 확인할 수 있고

    로그인 사용자가 쓴 비밀 댓글이라면 본인은 확인 가능하도록 하는 코드입니다.

    고맙습니다.

  • 여기에 추가로 문의 드립니다

    관리자 및 댓글 쓴 사람과 게시물 작성자가 모두 비밀 댓글을 보게 하려면 어떻게 해야할까요?

    요즘 많이 질문하네요 죄송하고 감사합니다 !!

  • 비밀댓글 작성 시 관리자, 게시글 작성자, 댓글 작성자에게만 보이게 하시려면

    kboard_comments_content 필터 쪽 코드를

    아래의 코드로 교체해보시겠어요?

    add_filter('kboard_comments_content', 'my_kboard_comments_content', 10, 3);
    function my_kboard_comments_content($content, $comment_uid, $content_uid){
    	$comment = new KBComment();
    	$comment->initWithUID($comment_uid);
    	
    	$board = $comment->getBoard();
    	
    	$user_id = get_current_user_id();
    	
    	if(!$board->isAdmin() && !$board->isEditor($user_id) && $comment->option->secret && $board->id == '1'){ // 실제 게시판 id로 적용해주세요.
    		if(!$user_id || $user_id != $comment->user_uid){
    			$content = '관리자만 볼 수 있습니다.';
    		}
    	}
    	return $content;
    }

    고맙습니다.

  • 안녕하세요, 말씀하신 대로 코드를 넣었으나 관리자에겐 보이지만 댓글작성자와 글작성자에게 모두 보이지 않습니다.
    이것은 로그인을 하지 않은 유저들을 대상으로 하는 익명게시판에 한해서입니다. 현재 익명댓글로 만들어놨고 author & password 칸도 비활성화 해놓은 상태입니다. 더 자세한 정보가 필요하시다면 labamboo.com에서 보시는게 더 빠를듯 싶습니다.

    해당 코드를 살짝 수정해서 다음과 같이 만들었지만, 바뀌는건 없습니다:

     

        if(!$board->isAdmin() && !$board->isEditor($user_id) && $comment->option->secret && $board->id == '1' && $content->member_uid !== get_current_user_id()){ // 실제 게시판 id로 적용해주세요.
            if(!$user_id ||$user_id != $comment->user_uid){
                $content = '관리자만 볼 수 있습니다.';
            }
        }

     

    감사합니다 ^^

  • 안녕하세요.

    해당 코드를 적용하면 비회원 사용자이거나

    로그인 사용자일 경우 본인이 쓴 댓글이 아닐 경우에 '관리자만 볼 수 있습니다.'라고 표시됩니다.

    로그인 사용자의 경우 구분 가능한 ID가 있지만

    비회원의 경우에는 자신이 쓴 글인지 확인하려면 ip 등으로 체크를 해야 할 듯합니다.

    하지만, ip의 경우 동적 ip를 사용한다면

    자신이 쓴 글이어도 식별이 불가능할 수도 있습니다.

    비회원 댓글 작성 관련해서 ip를 활용한 방법 외에 식별이 가능한 방법이 있을지 연구해보겠습니다.

    고맙습니다.

  • 네, 저 같은 경우 익명게시판의 취지가 로그인을 하지 않고 남길수 있는것이고 그렇기 때문에 로그인을 하지 않은 유저들끼리도 DM 을 통한 소통이 가능했으면 좋겠습니다. 연구해보신다니 정말 감사합니다! 기다리고 있겠습니다!

     

    감사합니다 ^^

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요