닉네임 금지단어 설정 방법 부탁드립니다.

안녕하세요?

KBoard 대시보드에서 작성자 금지단어 항목이 있어서 이곳에 닉네임으로 사용금지 단어를 몇가지를 추가를 했습니다.

https://imgur.com/tYZXDOv

 

그리고 WP-Members 필드에 사용자 이름과 닉네임이 분리가 되어 있습니다.

https://imgur.com/QkpCFzo

https://imgur.com/RgH3wqc

 

그런데 회원가입이나 기존 회원이 이름과 닉네임을 "운영자" 라고 가입을 하거나 변경을 해도 가능합니다.

https://imgur.com/yGyoa3u

https://imgur.com/Y41cZwY  (관리자가 아닌 일반 회원정보를 변경을 진행해 봤습니다.)

 

이 문제를 어떻게 해결할 수 있는지 궁금합니다.

 

 

 

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
  • 안녕하세요~^^

    KBoard 플러그인에서 작성자명은 워드프레스 공개적으로 표시할 이름을 활용하고 있습니다.

    워드프레스 관리자 -> 사용자 -> 나의 프로필 페이지에서

    공개적으로 표시할 이름 설정이 display_name입니다.

    워드프레스는 공개적으로 표시할 이름을 아이디, 닉네임, 이메일 등으로 선택해서 사용할 수 있도록 되어있습니다.

     

    혹시, 관리자로 로그인 후 게시글 작성 테스트하고

    브라우저를 종료하지 않고 다른 계정으로 로그인해서 테스트를 하셨는지요?

    KBoard 게시글 작성 시 브라우저에 일시적으로 게시글 데이터를 저장하고 있습니다.

    브라우저를 종료하신 후 일반회원으로 테스트하시거나

    크롬 브라우저 시크릿 모드 같은 걸로 테스트해보시겠어요?

    고맙습니다.

  • 네. 설명 고맙습니다.

    그런데 애초에 회원가입시에 닉네임 입력시 "중복확인" 버튼이 있는데 이걸 클릭했을때

    미리 정해진 금지단어를 입력하면 "사용할 수 없다"라는 메세지가 떠야 하는데 "사용 가능합니다"라는 메세지가 뜹니다.

    https://imgur.com/V0qOEJE

    이 문제는 고칠 수 없나요?

     

  • 코스모스팜 회원관리 플러그인 회원가입, 회원정보 페이지에서도 적용하시려면

    코드를 추가해주셔야 합니다.

    아래의 코드를 활용해보시겠어요?

    add_filter('cosmosfarm_members_exists_check_result', 'cosmosfarm_members_exists_check_result_20201228', 10, 1);
    function cosmosfarm_members_exists_check_result_20201228($result){
    	$board_id = '1'; // 실제 게시판 id로 적용해주세요.
    	$board = new KBoard($board_id);
    	
    	$name_filter = kboard_name_filter(true);
    	if(!$board->isAdmin() && $name_filter && $result['meta_key'] == 'display_name'){
    		$replace = array(' ', '「', '」', '『', '』', '-', '_', '.', '(', ')', '[', ']', ',', '~', '*', '+', '^', '♥', '★', '!', '#', '=', '­', '[', ']', '/', '▶', '▷', '<', '>', '%', ':', 'ღ', '$', '*', '♣', '♧', '☞');
    		
    		$subject = urldecode($result['meta_value']);
    		$subject = strtolower($subject);
    		$subject = str_replace($replace, '', $subject);
    		
    		$name_filter_message = get_option('kboard_name_filter_message', '');
    		
    		foreach($name_filter as $filter){
    			if($filter && strpos($subject, $filter) !== false){
    				$result['exists'] = false;
    				$result['message'] = '사용할 수 없습니다.';
    			}
    		}
    	}
    	
    	return $result;
    }
    
    add_action('wpmem_pre_register_data', 'wpmem_pre_register_data_20201228', 1, 1);
    function wpmem_pre_register_data_20201228($fields){
    	global $wpmem_themsg;
    	
    	$board_id = '1'; // 실제 게시판 id로 적용해주세요.
    	$board = new KBoard($board_id);
    	$value = isset($_POST['display_name']) ? sanitize_text_field($_POST['display_name']) : '';
    	
    	$name_filter = kboard_name_filter(true);
    	if(!$board->isAdmin() && $name_filter && $value){
    		$replace = array(' ', '「', '」', '『', '』', '-', '_', '.', '(', ')', '[', ']', ',', '~', '*', '+', '^', '♥', '★', '!', '#', '=', '­', '[', ']', '/', '▶', '▷', '<', '>', '%', ':', 'ღ', '$', '*', '♣', '♧', '☞');
    		
    		$subject = urldecode($value);
    		$subject = strtolower($subject);
    		$subject = str_replace($replace, '', $subject);
    		
    		$name_filter_message = get_option('kboard_name_filter_message', '');
    		
    		foreach($name_filter as $filter){
    			if($filter && strpos($subject, $filter) !== false){
    				$wpmem_themsg = '사용할 수 없는 닉네임입니다.';
    				return false;
    			}
    		}
    	}
    }
    add_action('wpmem_pre_update_data', 'wpmem_pre_update_data_20201228', 1, 1);
    function wpmem_pre_update_data_20201228($fields){
    	global $wpmem_themsg;
    	
    	$board_id = '1'; // 실제 게시판 id로 적용해주세요.
    	$board = new KBoard($board_id);
    	$value = isset($_POST['display_name']) ? sanitize_text_field($_POST['display_name']) : '';
    	
    	$name_filter = kboard_name_filter(true);
    	if(!$board->isAdmin() && $name_filter && $value){
    		$replace = array(' ', '「', '」', '『', '』', '-', '_', '.', '(', ')', '[', ']', ',', '~', '*', '+', '^', '♥', '★', '!', '#', '=', '­', '[', ']', '/', '▶', '▷', '<', '>', '%', ':', 'ღ', '$', '*', '♣', '♧', '☞');
    		
    		$subject = urldecode($value);
    		$subject = strtolower($subject);
    		$subject = str_replace($replace, '', $subject);
    		
    		$name_filter_message = get_option('kboard_name_filter_message', '');
    		
    		foreach($name_filter as $filter){
    			if($filter && strpos($subject, $filter) !== false){
    				$wpmem_themsg = '사용할 수 없는 닉네임입니다.';
    				return false;
    			}
    		}
    	}
    }

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

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

    고맙습니다.

  • 알려주신 코드를 추가하고 새로 회원가입시 테스트, 

    이미 가입되어 있는 회원정보 닉네임 수정할때 경고가 뜹니다.

    깔끔하게 수정이 되었습니다. ^^

    https://imgur.com/gkDGIPv

    고맙습니다.

     

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