작성자 이름 마스킹 표시 관련

// 게시판 이름 별표 처리 & 본인인증한 이름으로 노출
add_filter('kboard_user_display', 'my_kboard_user_display', 10, 5);
function my_kboard_user_display($user_display, $user_id, $user_name, $plugin, $builder){
	
	if(in_array($user_name, array('김포골드라인'))){
		return $user_name;
	}
	
	if(!$builder->board->isAdmin($user_id)){
		if($user_id){
			$certification_name = get_user_meta($user_id, 'certification_name', true);
			if($certification_name){
				$user_display = $certification_name;
			}
		}
		
		$strlen = mb_strlen($user_display, 'utf-8');
		if($strlen > 10){
			$showlen = 1;
		}
		else{
			$showlen = 2;
		}
		
		$user_display = mb_substr($user_display, 0, $showlen, 'utf-8') . str_repeat('*', $strlen-$showlen);
	}
	
	return $user_display;
}

 

안녕하세요.

 

일전에 게시판 작성자 이름 별표 마스킹 처리 관련하여 위 소스를 안내받아 적용했었습니다.

잘 사용하고 있었는데요, 문제는 작성자 이름이 한자리 수일 경우에, 해당 페이지가 안보이는 경우입니다.

 

위 소스에서 작성자 이름이 한자리 수 일 경우에는 한자리 수 이름이 보이게끔 수정하고 싶은데,

어느 부분을 수정하면 될까요?

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

    작성자명이 한 글자인 경우 그대로 표시되게 하시려면

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

    // 게시판 이름 별표 처리 & 본인인증한 이름으로 노출
    add_filter('kboard_user_display', 'my_kboard_user_display', 10, 5);
    function my_kboard_user_display($user_display, $user_id, $user_name, $plugin, $builder){
    	
    	if(in_array($user_name, array('김포골드라인'))){
    		return $user_name;
    	}
    	
    	if(!$builder->board->isAdmin($user_id)){
    		if($user_id){
    			$certification_name = get_user_meta($user_id, 'certification_name', true);
    			if($certification_name){
    				$user_display = $certification_name;
    			}
    		}
    		
    		$strlen = mb_strlen($user_display, 'utf-8');
    		if($strlen > 1){
    			if($strlen > 10){
    				$showlen = 1;
    			}
    			else{
    				$showlen = 2;
    			}
    			
    			$user_display = mb_substr($user_display, 0, $showlen, 'utf-8') . str_repeat('*', $strlen-$showlen);
    		}
    	}
    	
    	return $user_display;
    }

     

    커뮤니티에서는 저희가 모든 코드를 일일이 만들어 드리는 건 현실적으로 불가능합니다.

    또한 100% 해결을 보장해드리긴 어렵습니다.

    상황에 따라 코드가 달라질 수 있습니다.

     

    직접 코드를 수정하기 어려우시거나 수정해야 할 부분이 많다면

    프로젝트 의뢰에 상세 내용을 올려보세요.

    고맙습니다.

  • 한가지만 더 요청드리고 싶습니다..

    현재 상태는 관리자든 아니든 모두 회원 이름이 *로 마스킹되어 보여지는데요,

    코드를 여러번 수정한 상태라 다른 문의글을 확인해도 선뜻 어느부분을 수정해야할지 감이 안오네요ㅠㅠ

    아래 소스에서 어떤 부분을 수정하면, 관리자한테도 고객이름이 보일까요?ㅠㅠ 부탁드립니다...!!!!

    // 게시판 이름 별표 처리 & 본인인증한 이름으로 노출
    add_filter('kboard_user_display', 'my_kboard_user_display', 10, 5);
    function my_kboard_user_display($user_display, $user_id, $user_name, $plugin, $builder){
    	
    	if(in_array($user_name, array('김포골드라인'))){
    		return $user_name;
    	}
    	
    	if(!$builder->board->isAdmin($user_id)){
    		if($user_id){
    			$certification_name = get_user_meta($user_id, 'certification_name', true);
    			if($certification_name){
    				$user_display = $certification_name;
    			}
    		}
    		
    		$strlen = mb_strlen($user_display, 'utf-8');
    		if($strlen > 1){
    			if($strlen > 10){
    				$showlen = 1;
    			}
    			else{
    				$showlen = 2;
    			}
    			
    			$user_display = mb_substr($user_display, 0, $showlen, 'utf-8') . str_repeat('*', $strlen-$showlen);
    		}
    	}
    	
    	return $user_display;
    }

     

  • !$builder->board->isAdmin($user_id) 부분을

    !$builder->board->isAdmin($user_id) && !$builder->board->isAdmin() 코드로 교체해보시겠어요?

    위와 같이 적용하면 작성자와 관리자에게는 마스킹 처리되지 않습니다.

    고맙습니다.

  •  

    알려주신대로 적용했더니, 관리자에서는 이름이 아닌, 사용자 아이디가 목록에 노출됩니다.

    certification_name 으로 실명 인증한 이름을 게시판 목록 이름으로 불러오게 설정해 두었었는데요,

    관리자에서 아이디가 아닌 이름이 노출되었으면 합니다.. ㅠㅠ

  • $builder->board->isAdmin() 코드를 활용하시면

    현재 접속한 사용자가 관리자인지 체크하실 수 있습니다.

     

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

    // 게시판 이름 별표 처리 & 본인인증한 이름으로 노출
    add_filter('kboard_user_display', 'my_kboard_user_display', 10, 5);
    function my_kboard_user_display($user_display, $user_id, $user_name, $plugin, $builder){
    	
    	if(in_array($user_name, array('김포골드라인'))){
    		return $user_name;
    	}
    	
    	if(!$builder->board->isAdmin($user_id)){
    		if($user_id){
    			$certification_name = get_user_meta($user_id, 'certification_name', true);
    			if($certification_name){
    				$user_display = $certification_name;
    			}
    		}
    		
    		if(!$builder->board->isAdmin()){
    			$strlen = mb_strlen($user_display, 'utf-8');
    			if($strlen > 1){
    				if($strlen > 10){
    					$showlen = 1;
    				}
    				else{
    					$showlen = 2;
    				}
    				
    				$user_display = mb_substr($user_display, 0, $showlen, 'utf-8') . str_repeat('*', $strlen-$showlen);
    			}
    		}
    	}
    	
    	return $user_display;
    }

     

    이전 댓글에서도 안내해드린 것처럼

    저희가 커뮤니티에서 모든 코드를 만들어 드리는 건 현실적으로 불가능합니다.

    다음엔 유료 기술지원을 요청해주시길 부탁드립니다.

    고맙습니다.

  • 정말 감사합니다.!!!!!! ㅠㅠ

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