작성자 마스킹 관련

안녕하세요.

지난번 작성자 마스킹 관련하여 글을 올렸습니다, (http://www.cosmosfarm.com/threads/document/17143)

구현결과 제 의도와 동일하지 않아 답변 참고여 다르게 해봤는데, 잘 안되어 글 다시 올립니다.

ㅇ 질문 (볼드체로 기존질문 구체화)
1. 게시물 작성자, 관리자 구분하여 마스킹 처리 
  - 대상 : list, edit, document, 답글 화면 모두
  - 일반 작성자 : "홍길동" -> "홍O동"으로 가운데 마스킹 되어 표시
    => 홍ㅇㅇ으로는 구현했는데, 성 말고 전체 마스킹이 아닌 2번째 글자만(홍ㅇ동) 마스킹 처리가 가능한가요?

  - 관리자 : "관리자" -> "관리자"로 정상 표시 (답글 작성시 포함)
    => 관리자가 마스킹 된 작성자를 볼 수 있는 방법 알려주셨는데,
         관리자가 답글(RE)시 관리자, 비관리자 상관없이 작성자명이 그대로 나오게 하고 싶습니다.
         (검색해 보니 FUNCTIONS.PHP로 가능한거 같은데, 해당 파일을 찾지 못하겠습니다.)
    예)   질문 드립니다.              홍ㅇ동
             Re:질문 드립니다.        관리자

 

날씨가 많이 추워졌습니다. 감기 조심하세요.

감사합니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 편집할 테마 선택에서 사용중이신 테마를 선택 후

    functions.php 파일을 선택하신 후 편집해주세요.

     

    코드를 편집하기 어려우시거나

    FTP로 파일을 다운로드 하여 해당 파일을 직접 수정하기 어려우시다면

    Code Snippet 플러그인을 사용해서 적용해주세요.

    고맙습니다.

     

     

  •  워드프레스 관리자 -> 외모 -> 테마 편집기 -> functions.php 파일에

    아래의 코드를 추가해보세요.

     

     

    글에서,--> functions.php 파일에아래의 코드를 추가해보세요. 

    글부터 모르겠습니다. 오른쪽에 보니 ,편집할테마선택이 나오느데... 

    이중에 어떤걸 선택해야되나요? ㅠㅠ

     

     

  • 안녕하세요~^^

    최신 버전의 KBoard 플러그인을 사용 중이시라면

    스킨 파일을 직접 수정하지 마시고 테마 쪽 functions.php 파일에 코드를 추가해보시겠어요?

    워드프레스 관리자 -> 외모(테마 디자인) -> 테마 편집기 페이지에서 functions.php 파일 하단에

    아래의 코드를 추가해보세요.

    add_filter('kboard_user_display', 'my_kboard_user_display', 10, 5);
    function my_kboard_user_display($user_display, $user_id, $user_name, $plugins, $boardBuilder){
    	$board = $boardBuilder->board;
    	if($board->id == '1'){ // 실제 게시판 id로 적용해주세요.
    		$userdata = get_userdata($user_id);
    		if(!in_array('administrator', $userdata->roles)){
    			$strlen = mb_strlen($user_name, 'utf-8');
    			
    			if($strlen > 3){
    				$header_showlen = 2;
    				$footer_showlen = $header_showlen+2;
    			}
    			else{
    				$header_showlen = 1;
    				$footer_showlen = $header_showlen+1;
    			}
    			
    			$user_display = mb_substr($user_name, 0, $header_showlen, 'utf-8') . str_repeat('O', $header_showlen) . mb_substr($user_name, $footer_showlen, $strlen, 'utf-8');
    		}
    	}
    
    	return $user_display;
    }

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

     

    워드프레스 관리자 페이지에서 테마 쪽 functions.php 파일을 수정할 수 없다면

    FTP로 접속해서 /wp-content/themes/사용중인테마/functions.php 파일에 직접 코드를 추가해보세요.

    고맙습니다.

  • 안녕하세요

    위의 사항 그대로 하니 잘 작동되네요

    그런데 관리자도 중간에 이름이 O로 표시됩니다. 예)관O자

    관리자는 관리자 이름 그대로 나오게 하는 방법은 없을까요?

     

  • 안녕하세요~^^

    1. 워드프레스 관리자 -> 외모 -> 테마 편집기 -> functions.php 파일에

    아래의 코드를 추가해보세요.

    function my_kboard_hide_username($username){
    	$strlen = mb_strlen($username, 'utf-8');
    	
    	if($strlen > 3){
    		$header_showlen = 2;
    		$footer_showlen = $header_showlen+2;
    	}
    	else{
    		$header_showlen = 1;
    		$footer_showlen = $header_showlen+1;
    	}
    	
    	$username = mb_substr($username, 0, $header_showlen, 'utf-8') . str_repeat('O', $header_showlen) . mb_substr($username, $footer_showlen, $strlen, 'utf-8');
    	
    	return $username;
    }

     

    스킨에 따라 다르겠지만 

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

    /wp-content/plugins/kboard/skin/사용중인스킨/document.php 파일에서

    아래의 3가지 코드 중에서 사용 중인 스킨에 적용되어있는 코드를 찾아서

    <?php echo apply_filters('kboard_user_display', $content->member_display, $content->member_uid, $content->member_display, 'kboard', $boardBuilder)?>
    <?php echo $content->member_display?>
    <?php echo apply_filters('kboard_user_display', get_avatar($content->member_uid, 24, '', $content->member_display).'<br>'.$content->member_display, $content->member_uid, $content->member_display, 'kboard', $boardBuilder)?>

     

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

    <?php echo my_kboard_hide_username($content->member_display)?>

     

    2. 관리자가 답글(RE)시 관리자, 비관리자 상관없이 작성자명이 나오게 하시려면

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

    아래의 코드를 찾아서

    <?php echo $content->member_display?>

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

    <?php
    if($content->member_uid){
    	$userdata = get_userdata($content->member_uid);
    	if(in_array('administrator', $userdata->roles)){
    		echo $content->member_display;
    	}
    }
    else{
    	echo my_kboard_hide_username($content->member_display);
    }
    ?>

    고맙습니다.

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