댓글 작성자의 이름을 다른사람이 못보게 마스킹 처리할 수 있을까요? 첫글자만 보여주고요.

댓글 입력한 입력사용자의 이름을 첫글자 외에 마스킹 처리하려고 합니다.

 

기존 코드로 사용하려니 적용이 되지 않는데요, 

현재 상세 페이지에서 타이틀을 마스킹 처리하고 있는데, 추가로 댓글을 달은 사람의 이름을 마스킹 처리하려고 합니다. 다만, 관리자와 작성자는 full name이 보여지고요.

 

방법이 있을까요?

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

    KBoard 플러그인에서 작성자명은 kboard_user_display 필터로 편집하실 수 있습니다.

    관리자와 작성자 로그인 시에는 모든 댓글의 작성자명에 마스킹 처리를 안 하고 싶으신 건지요?

    아니면 관리자와 작성자 댓글에는 마스킹 처리를 안 하고 싶으신 건지요?

    위와 같이 상황에 따라 코드가 달라집니다.

    좀 더 설명해주시겠어요?

    고맙습니다.

  • 작성자명 마스킹 관련해서는

    아래의 커뮤니티 검색 결과도 참고 부탁드립니다.

    https://www.cosmosfarm.com/search?q=%EC%9E%91%EC%84%B1%EC%9E%90+%EB%A7%88%EC%8A%A4%ED%82%B9

    고맙습니다.

  • 댓글의 작성자를 마스킹 처리하고 싶은 것이고요, 관리자와 작성자만 마스킹 처리되지 않은 전체 이름으로 볼 수 있도록 수정하고 싶습니다.

    현재 작성자 마스킹은 글 작성자에 한해서만 적용되어있기 때문에 댓글에서만 반영하는 코드를 확인하고 싶습니다.

    감사합니다.

  • 안녕하세요.

    게시글 작성자와 관리자 외에는 댓글 작성자명 마스킹 처리하시려면

    아래의 코드를 활용해보세요.

    add_filter('kboard_user_display', 'kboard_user_display_20200730', 10, 5);
    function kboard_user_display_20200730($user_display, $user_id, $user_name, $plugin, $builder){
    	$board = $builder->board;
    	
    	if(kboard_uid()){
    		$content = new KBContent();
    		$content->initWithUID(kboard_uid());
    		$userdata = get_userdata($user_id);
    		
    		if($plugin == 'kboard-comments' && $board->id == '1'){ // 실제 게시판 id로 적용해주세요.
    			if($content->member_uid != $user_id && !in_array('administrator', $userdata->roles)){
    				$strlen = mb_strlen($user_name, 'utf-8');
    				
    				if($strlen > 3){
    					$showlen = 2;
    				}
    				else{
    					$showlen = 1;
    				}
    				
    				$user_name = mb_substr($user_name, 0, $showlen, 'utf-8') . str_repeat('*', $strlen-$showlen);
    				
    				$user_display = sprintf('%s %s', get_avatar($user_id, 24, '', $user_name), $user_name);
    			}
    		}
    	}
    	
    	return $user_display;
    }

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

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

    고맙습니다.

  • 전달 주신 코드로 했을때는 특정 사용자만 가려지는데요... 이유가 뭘까요 ;;

    작성자를 제외한 모든 회원이 마스킹된 아이디를 보게끔 해야합니다. (관리자도 볼 수 있어야함)

    ^^;; 한번 다시 확인 부탁드려요 ~ 

     

    P.S 혹시 댓글 스킨을 새로 생성해서 보여주는 경우에는 functions이 다를까요?

  • 이전 댓글을 적용하시면

    게시글 작성자, 관리자를 제외한 사용자의 작성자명에 마스킹 처리가 됩니다.

    게시글 작성자와 관리자는 댓글을 단 작성자명을 모두 볼 수 있고

    그 외의 사용자는 작성자명 마스킹 처리를 하시려면

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

    add_filter('kboard_user_display', 'kboard_user_display_20200730', 10, 5);
    function kboard_user_display_20200730($user_display, $user_id, $user_name, $plugin, $builder){
    	$board = $builder->board;
    	
    	if(kboard_uid()){
    		$content = new KBContent();
    		$content->initWithUID(kboard_uid());
    		
    		if($plugin == 'kboard-comments' && $board->id == '1'){ // 실제 게시판 id로 적용해주세요.
    			if(!$board->isEditor($content->member_uid)){
    				$strlen = mb_strlen($user_name, 'utf-8');
    				
    				if($strlen > 3){
    					$showlen = 2;
    				}
    				else{
    					$showlen = 1;
    				}
    				
    				$user_name = mb_substr($user_name, 0, $showlen, 'utf-8') . str_repeat('*', $strlen-$showlen);
    				
    				$user_display = sprintf('%s %s', get_avatar($user_id, 24, '', $user_name), $user_name);
    			}
    		}
    	}
    	
    	return $user_display;
    }

     

    스킨을 복사해서 수정하실 경우

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

    아래의 코드가 있어야 작성자명 마스킹 코드가 동작합니다.

    <?php echo $comment->getUserDisplay()?>

    고맙습니다.

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