안녕하세요.
지난번 작성자 마스킹 관련하여 글을 올렸습니다, (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);
}
?>
고맙습니다.