비밀댓글 관련 코드수정 오류

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; }

 

 

워드프레스 테마에서 이 코드를 수정하려고 하는데 

Your PHP code changes were rolled back due to an error on line 109 of file wp-content/themes/cryptcio-child/functions.php. Please fix and try saving again.

Cannot redeclare my_kboard_comments_field() (previously declared in wp-content/themes/cryptcio-child/functions.php:76)

 

라는 오류가 뜨네요.. function my_kboard_comments_field($field_html, $board, $content_uid, $commentBuilder) 이부분에서 오류가 납니다.

현재 사용중인 게시판 형식은 first-contents-mall 입니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
  • 아. 그리고 게시판이 여러개여서 실제 게시판 번호를 여러개 작성해야 하는데 그때는 어떻게 해야하나요?

  • 안녕하세요~^^

    프로그램 코드를 올려야 할 경우 에디터의 코드 스니펫 삽입 기능을 사용해주세요.

    그렇지 않으면 이상한 코드로 바뀌거나

    질의응답 시 의사소통에 문제가 있을 수도 있습니다.

     

    Cannot redeclare 관련 에러 메시지는 PHP 함수명 중복 문제로 보입니다.

    기존에 추가하신 코드가 있으신지요?

    my_kboard_comments_field 부분을 my_kboard_comments_field1 이런 식으로 모두 교체해서

    PHP 함수명이 중복되지 않게 적용해보시겠어요?

     

    여러 개의 게시판에 적용하시려면

    올려주신 코드 중 $board->id == '1' 부분을

    in_array($board->id, array('1', '2', '3')) 이런 식으로 모두 교체해보시겠어요?

    위의 코드에서 각 숫자는 게시판 id로 적용해보세요.

    고맙습니다.
    
  • 네 감사합니다. 적용은 되었습니다.

    근데.. 예를들어 1번의 회원이 비밀 댓글이 단 댓글에 관리자가 비밀댓글의 댓글을 비밀로 달았을 때 1번유저한테는 보여야 합니다..

    방법이 없을까요?

  • 안녕하세요.

    말씀하신 1번 회원은 게시글 작성자를 말씀하시는 건지요?

    아니면 게시글 작성자도 될 수 있고 다른 사용자도 될 수 있는지요?

    상황에 따라 코드가 달라지기 때문에

    좀 더 구체적으로 설명해주시겠어요?

    고맙습니다.

  • 1번회원은 게시글 작성자 입니다.

     

    1번회원이 비밀게시글을 작성하고, 관리자가 비밀댓글을 달았을 시 1번 회원은 관리자의 비밀댓글을 볼 수 있어야 합니다.

  • KBoard 플러그인에서 게시글을 비밀글로 작성하면

    게시글 작성자와 관리자만 내용을 볼 수 있습니다.

    그렇기 때문에 별다른 처리를 하지 않더라도

    다른 사용자는 내용을 볼 수 없기 때문에 댓글 또한 볼 수 없습니다.

     

    비밀글과 비밀댓글 기능 모두 사용하는 이유가 있으신지요?

     

    다른 사용자도 댓글을 볼 수 있는 상황이라면

    아래의 코드를 활용해서 게시글 작성자와 관리자만 댓글을 보게 하실 수 있습니다.

    add_filter('kboard_comments_content', 'kboard_comments_content_20200811', 10, 3);
    function kboard_comments_content_20200811($comments_content, $comment_uid, $content_uid){
    	$comment = new KBComment();
    	$comment->initWithUID($comment_uid);
    	$board = $comment->getBoard();
    	
    	$content = new KBContent();
    	$content->initWithUID($content_uid);
    	
    	if(!$content->isEditor() && $board->id == '1'){ // 실제 게시판 id로 적용해주세요.
    		$comments_content = '권한이 없습니다.';
    	}
    	return $comments_content;
    }

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

    KBContent 클래스의 isEditor 메소드를 활용하시면 게시글 작성자인지 체크하실 수 있습니다.

    고맙습니다.

  • 말씀 감사합니다. 지금 문제가 되는건..

    1번회원이 비밀 댓글로 댓글을 달았을 경우 게시판운영자도 1번회원 댓글의 댓글로 비밀글을 작성합니다.

    이런 상황일 때 현재 1번회원은 자신의 댓글은 보이지만, 자신의 대댓글로 단 게시판운영자의 비밀댓글을 볼 수 없습니다.

    1번회원이 자신의 댓글의 대댓글로 달린 운영자의 비밀글을 볼 수 있어야 합니다..

  • 게시글 작성자와 관리자만 댓글을 볼 수 있는 건

    이전 댓글에 안내해드린 코드를 참고해보시겠어요?

    비밀댓글 조건을 추가하시려면 if문에 $comment->option->secret 조건도 추가해보세요.

    고맙습니다.

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