안녕하세요?
KBoard 대시보드에서 작성자 금지단어 항목이 있어서 이곳에 닉네임으로 사용금지 단어를 몇가지를 추가를 했습니다.
https://imgur.com/tYZXDOv
그리고 WP-Members 필드에 사용자 이름과 닉네임이 분리가 되어 있습니다.
https://imgur.com/QkpCFzo
https://imgur.com/RgH3wqc
그런데 회원가입이나 기존 회원이 이름과 닉네임을 "운영자" 라고 가입을 하거나 변경을 해도 가능합니다.
https://imgur.com/yGyoa3u
https://imgur.com/Y41cZwY (관리자가 아닌 일반 회원정보를 변경을 진행해 봤습니다.)
이 문제를 어떻게 해결할 수 있는지 궁금합니다.
알려주신 코드를 추가하고 새로 회원가입시 테스트,
이미 가입되어 있는 회원정보 닉네임 수정할때 경고가 뜹니다.
깔끔하게 수정이 되었습니다. ^^
https://imgur.com/gkDGIPv
고맙습니다.
코스모스팜 회원관리 플러그인 회원가입, 회원정보 페이지에서도 적용하시려면
코드를 추가해주셔야 합니다.
아래의 코드를 활용해보시겠어요?
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/V0qOEJE
이 문제는 고칠 수 없나요?
안녕하세요~^^
KBoard 플러그인에서 작성자명은 워드프레스 공개적으로 표시할 이름을 활용하고 있습니다.
워드프레스 관리자 -> 사용자 -> 나의 프로필 페이지에서
공개적으로 표시할 이름 설정이 display_name입니다.
워드프레스는 공개적으로 표시할 이름을 아이디, 닉네임, 이메일 등으로 선택해서 사용할 수 있도록 되어있습니다.
혹시, 관리자로 로그인 후 게시글 작성 테스트하고
브라우저를 종료하지 않고 다른 계정으로 로그인해서 테스트를 하셨는지요?
KBoard 게시글 작성 시 브라우저에 일시적으로 게시글 데이터를 저장하고 있습니다.
브라우저를 종료하신 후 일반회원으로 테스트하시거나
크롬 브라우저 시크릿 모드 같은 걸로 테스트해보시겠어요?
고맙습니다.