게시판 작성자명 마스킹하고 관리자 작성자명은 모두 보이게 수정

안녕하세요 

사용중인 쇼핑몰 게시판에 게시판 작성자명을 *표로 마스킹하고 싶습니다.

기존 답변글을 검색해보니 아래와 같이  functions.php 파일 하단에 코드를 삽입하려고 하는데 

추가로 궁금한게 2가지 있습니다. 

첫째...  $board->id == '1'    <--- 요기에 1 대신 실제 적용하려는 게시판  ID 번호를 입력하며 된다고 하셨는데...

저같은 경우는 여러개의 게시판에 모두 적용하려면 어떻게 입력하면 될까요? 

다국어 쇼핑몰의 게시판이라서 각 언어별로  ID가  1, 2 , 4 , 5,  6  (총 5개)에 일괄 적용하고 싶습니다.  

두번째... 작성자명의 맨 앞 첫 문자만 보이고 나머지는 모두 * 표시되는게 아니라 맨앞과 맨 끝문자만 보이게 하려면  코드를 어떻게 수정해야 하나요?

예를 들어 홍길동은 홍*동...  David 는 D***d...

참고로 실제 사용중인 쇼핑몰은 https://gem.dollsoom.com/support/qna/ 입니다.  

제가 이런 쪽으로 너무 초보자입니다. 아시는 분의 답변 부탁드립니다. 감사합니다. 

    

/* K-board 게시판 작성자명 마스킹하고 관리자 작성자명은 모두 보이게 수정 */
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;
	$userdata = get_userdata($user_id);
	
	if($board->id == '1' && !$board->isAdmin() && !in_array('administrator', $userdata->roles)){
		$strlen = mb_strlen($user_name, 'utf-8');
		
		if($strlen > 3){
			$showlen = 2;
		}
		else{
			$showlen = 1;
		}
		
		$user_display = mb_substr($user_name, 0, $showlen, 'utf-8') . str_repeat('*', $strlen-$showlen);
	}
	
	return $user_display;
}

 

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

    여러 개의 게시판에 적용하시려면

    $board->id == '1' 부분을 in_array($board->id, array('1', '2', '3', '4', '5')) 이런 식으로 적용해보시겠어요?

     

    작성자명 맨 앞과 맨 끝만 표시되게 하고 나머지는 별표 처리하시려면

    올려주신 코드 중 아래의 코드를 찾아서

    $user_display = mb_substr($user_name, 0, $showlen, 'utf-8') . str_repeat('*', $strlen-$showlen);

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

    $user_display = mb_substr($user_name, 0, 1, 'utf-8') . str_repeat('*', $strlen-2) . mb_substr($user_name, $strlen-1, 1, 'utf-8');

    고맙습니다.

  • 안녕하세요 답변 감사합니다. 

    알려주신 대로 적용하니 잘 됩니다. ^^

    그런데 아래와 같이 2가지 문제가 발견됩니다. ;;;  

    1. 최상단 공지글의 경우 관리자 작성자(soomcs)명인데도 별표로 마스킹 됩니다. 

    2. 관리자의  답변글에 또다시 고객이 답변을 달게되면 작성자명이 노출됩니다. ㅋㅋ 

    혹시  2가지 오류의 개선 방법이 있을까요?  

    <blockquote class="imgur-embed-pub" lang="en" data-id="a/0BkcgGq"><a href="//imgur.com/a/0BkcgGq"></a></blockquote><script async src="//s.imgur.com/min/embed.js" charset="utf-8"></script>

     

  • 오류를 캡처한 이미지 링크입니다. https://imgur.com/2sZlj0q

  • 해당 코드를 적용하시면 현재 로그인한 사용자가 게시판 관리자가 아니면서

    게시글 작성자가 관리자 역할이 아닐 경우에 작성자 마스킹이 됩니다.

    답글에도 마찬가지로 적용됩니다.

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

    에디터의 코드 스니펫 삽입 기능으로 올려주시겠어요?

    고맙습니다.

  • 안녕하세요 

    /wp-content/plugins/kboard/skin/사용중인스킨/reply-template.php 파일 내용입니다. 

    1. 최상단 공지글도 관리자가 작성자인 경우이므로 마스킹 없이 작성자명 보이기. 

    2. 관리자의 답변글에 고객이 다시 답변을 달아도 고객 작성자명 마스킹하기 

    현재 적용된 사이트 : https://id.dollsoom.com/support/qna/ 

    그럼 조언 부탁드립니다. 감사합니다. 

    <?php while($content = $list->hasNextReply()):?>
    <tr class="<?php if($content->uid == kboard_uid()):?>kboard-list-selected<?php endif?>">
    	<td class="kboard-list-uid"></td>
    	<td class="kboard-list-title" style="padding-left:<?php echo ($depth+1)*5?>px">
    		<a href="<?php echo $url->set('uid', $content->uid)->set('mod', 'document')->toString()?>">
    			<div class="kboard-default-cut-strings">
    				<img src="<?php echo $skin_path?>/images/icon-reply.png" alt="">
    				<?php if($content->isNew()):?><span class="kboard-default-new-notify">New</span><?php endif?>
    				<?php if($content->secret):?><img src="<?php echo $skin_path?>/images/icon-lock.png" alt="<?php echo __('Secret', 'kboard')?>"><?php endif?>
    				<?php echo $content->title?>
    				<span class="kboard-comments-count"><?php echo $content->getCommentsCount()?></span>
                                    <?php if(strpos($content->content, '<img') !== false):?><i class="fa fa-file-image-o" style="color:steelblue"></i><?php endif?>
                                    <?php if(isset($content->attach) && (array)$content->attach):?><i class="fa fa-paperclip" style="color:red"></i><?php else:?><?php endif?>
    			</div>
    			<div class="kboard-mobile-contents">
    				<span class="contents-item"><?php echo $content->member_display?></span>
    				<span class="contents-separator">|</span>
    				<span class="contents-item"><?php echo $content->getDate()?></span>
    				<span class="contents-separator">|</span>
    				<span class="contents-item"><?php echo __('Votes', 'kboard')?> <?php echo $content->vote?></span>
    				<span class="contents-separator">|</span>
    				<span class="contents-item"><?php echo __('Views', 'kboard')?> <?php echo $content->view?></span>
    			</div>
    		</a>
    	</td>
    	<td class="kboard-list-user"><?php echo $content->member_display?></td>
    	<td class="kboard-list-date"><?php echo $content->getDate()?></td>
    	<td class="kboard-list-vote"><?php echo $content->vote?></td>
    	<td class="kboard-list-view"><?php echo $content->view?></td>
    </tr>
    <?php $boardBuilder->builderReply($content->uid, $depth+1)?>
    <?php endwhile?>

     

  • 올려주신 코드 중 아래의 코드를

    <?php echo $content->member_display?>

    아래의 코드로 모두 교체해보시겠어요?

    <?php echo $content->getUserDisplay()?>

    최신 버전에는 위의 코드가 적용되어 있습니다.

     

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

    아래의 코드가 공지사항을 표시하는 코드입니다.

    <?php while($content = $list->hasNextNotice()):?>
    ...
    <?php endwhile?>

    위의 코드 사이에

    아래의 코드 또는

    <?php echo $content->getUserDisplay()?>

    아래의 코드가 있다면

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

    아래의 코드로 교체해보시겠어요?

    <?php echo $content->member_display?>

    고맙습니다.

  • 안녕하세요

    알려주신대로 적용했는데...간단히 될듯하면서도 뭔가 아쉬운 상황이네요 ^^;;  

     

    일단 제가 원하는 바를 좀더 명확히 정리하자면 아래와 같습니다. 

    1. 관리자 작성자명은 무조건 노출 (공지글, 게시글, 답변글 모두... 로그인 로그아웃 상관없이 언제든지 노출)

    2. 고객 작성자명은 앞글자와 마지막 글자를 제외하고 기본적으로 보안을 위해 마스킹 처리!!  단, 고객 본인 로그인시 본인의 작성자명은 노출,  그리고... 관리자는 로그인시 모든 작성자명 보임.

     

    그런데 처음 알려주신 코드 적용 결과 다음의 2가지 문제가 발생

    1. 관리자 작성자명이 공지글에서는 마스킹됨.

    2. 관리자 답변글에 고객이 다시 답변을 달면...즉 두번째 답글 부터는 고객 작성자명이 노출되어버림. 

     

    그래서 위의 2가지 문제 해결 위해  reply-template.php와  list.php 에 최근 알려주신 코드로 수정한 결과...

     

    1.  고객이 답변을 여러번 달아도 고객 작성자명이 노출되지 않고 마스킹되는데 성공함.. 그러나 관리자의 작성자명은 보여져야하는데 마스킹되어버림;;;  

     

    제가 이해를 잘못하고 무언가 부족하게 수정을 해서 그런걸까요? 

    너무 수고를 끼쳐드려 송구한 마음입니다만 마지막으로 해결할 수 있도록 조언 주시면 감사하겠습니다. (_ _)

    현재 제가 수정 적용된 reply-template.php 와  list.php  내용입니다. 

    reply-template.php : 

    <?php while($content = $list->hasNextReply()):?>
    <tr class="<?php if($content->uid == kboard_uid()):?>kboard-list-selected<?php endif?>">
    	<td class="kboard-list-uid"></td>
    	<td class="kboard-list-title" style="padding-left:<?php echo ($depth+1)*5?>px">
    		<a href="<?php echo $url->set('uid', $content->uid)->set('mod', 'document')->toString()?>">
    			<div class="kboard-default-cut-strings">
    				<img src="<?php echo $skin_path?>/images/icon-reply.png" alt="">
    				<?php if($content->isNew()):?><span class="kboard-default-new-notify">New</span><?php endif?>
    				<?php if($content->secret):?><img src="<?php echo $skin_path?>/images/icon-lock.png" alt="<?php echo __('Secret', 'kboard')?>"><?php endif?>
    				<?php echo $content->title?>
    				<span class="kboard-comments-count"><?php echo $content->getCommentsCount()?></span>
                                    <?php if(strpos($content->content, '<img') !== false):?><i class="fa fa-file-image-o" style="color:steelblue"></i><?php endif?>
                                    <?php if(isset($content->attach) && (array)$content->attach):?><i class="fa fa-paperclip" style="color:red"></i><?php else:?><?php endif?>
    			</div>
    			<div class="kboard-mobile-contents">
    				<span class="contents-item"><?php echo $content->getUserDisplay()?></span>
    				<span class="contents-separator">|</span>
    				<span class="contents-item"><?php echo $content->getDate()?></span>
    				<span class="contents-separator">|</span>
    				<span class="contents-item"><?php echo __('Votes', 'kboard')?> <?php echo $content->vote?></span>
    				<span class="contents-separator">|</span>
    				<span class="contents-item"><?php echo __('Views', 'kboard')?> <?php echo $content->view?></span>
    			</div>
    		</a>
    	</td>
    	<td class="kboard-list-user"><?php echo $content->getUserDisplay()?></td>
    	<td class="kboard-list-date"><?php echo $content->getDate()?></td>
    	<td class="kboard-list-vote"><?php echo $content->vote?></td>
    	<td class="kboard-list-view"><?php echo $content->view?></td>
    </tr>
    <?php $boardBuilder->builderReply($content->uid, $depth+1)?>
    <?php endwhile?>

    list.php : 

    <div id="kboard-default-list">
    	
    	<!-- 게시판 정보 시작 -->
    	<div class="kboard-list-header">
    		<?php if(!$board->isPrivate()):?>
    			<div class="kboard-total-count">
    				<?php echo __('Total', 'kboard')?> <?php echo number_format($board->getListTotal())?>
    			</div>
    		<?php endif?>
    		
    		<div class="kboard-sort">
    			<form id="kboard-sort-form-<?php echo $board->id?>" method="get" action="<?php echo $url->toString()?>">
    				<?php echo $url->set('pageid', '1')->set('category1', '')->set('category2', '')->set('target', '')->set('keyword', '')->set('mod', 'list')->set('kboard_list_sort_remember', $board->id)->toInput()?>
    				
    				<select name="kboard_list_sort" onchange="jQuery('#kboard-sort-form-<?php echo $board->id?>').submit();">
    					<option value="newest"<?php if($list->getSorting() == 'newest'):?> selected<?php endif?>><?php echo __('Newest', 'kboard')?></option>
    					<option value="best"<?php if($list->getSorting() == 'best'):?> selected<?php endif?>><?php echo __('Best', 'kboard')?></option>
    					<option value="viewed"<?php if($list->getSorting() == 'viewed'):?> selected<?php endif?>><?php echo __('Viewed', 'kboard')?></option>
    					<option value="updated"<?php if($list->getSorting() == 'updated'):?> selected<?php endif?>><?php echo __('Updated', 'kboard')?></option>
    				</select>
    			</form>
    		</div>
    	</div>
    	<!-- 게시판 정보 끝 -->
    	
    	<?php if($board->use_category == 'yes'):?>
    	<!-- 카테고리 시작 -->
    	<div class="kboard-category category-mobile">
    		<form id="kboard-category-form-<?php echo $board->id?>" method="get" action="<?php echo $url->toString()?>">
    			<?php echo $url->set('pageid', '1')->set('category1', '')->set('category2', '')->set('target', '')->set('keyword', '')->set('mod', 'list')->toInput()?>
    			
    			<?php if($board->initCategory1()):?>
    				<select name="category1" onchange="jQuery('#kboard-category-form-<?php echo $board->id?>').submit();">
    					<option value=""><?php echo __('All', 'kboard')?></option>
    					<?php while($board->hasNextCategory()):?>
    					<option value="<?php echo $board->currentCategory()?>"<?php if(kboard_category1() == $board->currentCategory()):?> selected<?php endif?>><?php echo $board->currentCategory()?></option>
    					<?php endwhile?>
    				</select>
    			<?php endif?>
    			
    			<?php if($board->initCategory2()):?>
    				<select name="category2" onchange="jQuery('#kboard-category-form-<?php echo $board->id?>').submit();">
    					<option value=""><?php echo __('All', 'kboard')?></option>
    					<?php while($board->hasNextCategory()):?>
    					<option value="<?php echo $board->currentCategory()?>"<?php if(kboard_category2() == $board->currentCategory()):?> selected<?php endif?>><?php echo $board->currentCategory()?></option>
    					<?php endwhile?>
    				</select>
    			<?php endif?>
    		</form>
    	</div>
    	
    	<div class="kboard-category category-pc">
    		<?php if($board->initCategory1()):?>
    			<ul class="kboard-category-list">
    				<li<?php if(!kboard_category1()):?> class="kboard-category-selected"<?php endif?>><a href="<?php echo $url->set('category1', '')->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->tostring()?>"><?php echo __('All', 'kboard')?></a></li>
    				<?php while($board->hasNextCategory()):?>
    				<li<?php if(kboard_category1() == $board->currentCategory()):?> class="kboard-category-selected"<?php endif?>>
    					<a href="<?php echo $url->set('category1', $board->currentCategory())->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->toString()?>"><?php echo $board->currentCategory()?></a>
    				</li>
    				<?php endwhile?>
    			</ul>
    		<?php endif?>
    		
    		<?php if($board->initCategory2()):?>
    			<ul class="kboard-category-list">
    				<li<?php if(!kboard_category2()):?> class="kboard-category-selected"<?php endif?>><a href="<?php echo $url->set('category2', '')->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->tostring()?>"><?php echo __('All', 'kboard')?></a></li>
    				<?php while($board->hasNextCategory()):?>
    				<li<?php if(kboard_category2() == $board->currentCategory()):?> class="kboard-category-selected"<?php endif?>>
    					<a href="<?php echo $url->set('category2', $board->currentCategory())->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->toString()?>"><?php echo $board->currentCategory()?></a>
    				</li>
    				<?php endwhile?>
    			</ul>
    		<?php endif?>
    	</div>
    	<!-- 카테고리 끝 -->
    	<?php endif?>
    	
    	<!-- 리스트 시작 -->
    	<div class="kboard-list">
    		<table>
    			<thead>
    				<tr>
    					<td class="kboard-list-uid"><?php echo __('Number', 'kboard')?></td>
    					<td class="kboard-list-title"><?php echo __('Title', 'kboard')?></td>
    					<td class="kboard-list-user"><?php echo __('Author', 'kboard')?></td>
    					<td class="kboard-list-date"><?php echo __('Date', 'kboard')?></td>
    					<td class="kboard-list-vote"><?php echo __('Votes', 'kboard')?></td>
    					<td class="kboard-list-view"><?php echo __('Views', 'kboard')?></td>
    				</tr>
    			</thead>
    			<tbody>
    				<?php while($content = $list->hasNextNotice()):?>
    				<tr class="kboard-list-notice<?php if($content->uid == kboard_uid()):?> kboard-list-selected<?php endif?>">
    					<td class="kboard-list-uid"><?php echo __('Notice', 'kboard')?></td>
    					<td class="kboard-list-title">
    						<a href="<?php echo $url->set('uid', $content->uid)->set('mod', 'document')->toString()?>">
    							<div class="kboard-default-cut-strings">
    								<?php if($content->isNew()):?><span class="kboard-default-new-notify">New</span><?php endif?>
    								<?php if($content->secret):?><img src="<?php echo $skin_path?>/images/icon-lock.png" alt="<?php echo __('Secret', 'kboard')?>"><?php endif?>
    								<?php if($content->category1):?>[<?php echo $content->category1?>]<?php endif?>
                                                                    <?php if($content->category2):?>[<?php echo $content->category2?>]<?php endif?><?php echo $content->title?>
    								<span class="kboard-comments-count"><?php echo $content->getCommentsCount()?></span>
    							</div>
    						</a>
    						<div class="kboard-mobile-contents">
    							<span class="contents-item"><?php echo $content->member_display?></span>
    							<span class="contents-separator">|</span>
    							<span class="contents-item"><?php echo $content->getDate()?></span>
    							<span class="contents-separator">|</span>
    							<span class="contents-item"><?php echo __('Votes', 'kboard')?> <?php echo $content->vote?></span>
    							<span class="contents-separator">|</span>
    							<span class="contents-item"><?php echo __('Views', 'kboard')?> <?php echo $content->view?></span>
    						</div>
    					</td>
    					<td class="kboard-list-user"><?php echo $content->member_display?></td>
    					<td class="kboard-list-date"><?php echo $content->getDate()?></td>
    					<td class="kboard-list-vote"><?php echo $content->vote?></td>
    					<td class="kboard-list-view"><?php echo $content->view?></td>
    				</tr>
    				<?php endwhile?>
    				<?php while($content = $list->hasNext()):?>
    				<tr class="<?php if($content->uid == kboard_uid()):?>kboard-list-selected<?php endif?>">
    					<td class="kboard-list-uid"><?php echo $list->index()?></td>
    					<td class="kboard-list-title">
    						<a href="<?php echo $url->set('uid', $content->uid)->set('mod', 'document')->toString()?>">
    							<div class="kboard-default-cut-strings">
    								<?php if($content->isNew()):?><span class="kboard-default-new-notify">New</span><?php endif?>
    								<?php if($content->secret):?><img src="<?php echo $skin_path?>/images/icon-lock.png" alt="<?php echo __('Secret', 'kboard')?>"><?php endif?>
    								<?php if($content->category1):?>[<?php echo $content->category1?>]<?php endif?>
                                                                    <?php if($content->category2):?>[<?php echo $content->category2?>]<?php endif?><?php echo $content->title?>
    								<span class="kboard-comments-count"><?php echo $content->getCommentsCount()?></span>
                                                                    <?php if(strpos($content->content, '<img') !== false):?><i class="fa fa-file-image-o" style="color:steelblue"></i><?php endif?>
                                                                    <?php if(isset($content->attach) && (array)$content->attach):?><i class="fa fa-paperclip" style="color:red"></i><?php else:?><?php endif?>
    							</div>
    						</a>
    						<div class="kboard-mobile-contents">
    							<span class="contents-item"><?php echo apply_filters('kboard_user_display', $content->member_display, $content->member_uid, $content->member_display, 'kboard', $boardBuilder)?></span>
    							<span class="contents-separator">|</span>
    							<span class="contents-item"><?php echo $content->getDate()?></span>
    							<span class="contents-separator">|</span>
    							<span class="contents-item"><?php echo __('Votes', 'kboard')?> <?php echo $content->vote?></span>
    							<span class="contents-separator">|</span>
    							<span class="contents-item"><?php echo __('Views', 'kboard')?> <?php echo $content->view?></span>
    						</div>
    					</td>
    					<td class="kboard-list-user"><?php echo apply_filters('kboard_user_display', $content->member_display, $content->member_uid, $content->member_display, 'kboard', $boardBuilder)?></td>
    					<td class="kboard-list-date"><?php echo $content->getDate()?></td>
    					<td class="kboard-list-vote"><?php echo $content->vote?></td>
    					<td class="kboard-list-view"><?php echo $content->view?></td>
    				</tr>
    				<?php $boardBuilder->builderReply($content->uid)?>
    				<?php endwhile?>
    			</tbody>
    		</table>
    	</div>
    	<!-- 리스트 끝 -->
    	
    	<!-- 페이징 시작 -->
    	<div class="kboard-pagination">
    		<ul class="kboard-pagination-pages">
    			<?php echo kboard_pagination($list->page, $list->total, $list->rpp)?>
    		</ul>
    	</div>
    	<!-- 페이징 끝 -->
    	
    	<!-- 검색폼 시작 -->
    	<div class="kboard-search">
    		<form id="kboard-search-form-<?php echo $board->id?>" method="get" action="<?php echo $url->toString()?>">
    			<?php echo $url->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->toInput()?>
    			
    			<select name="target">
    				<option value=""><?php echo __('All', 'kboard')?></option>
    				<option value="title"<?php if(kboard_target() == 'title'):?> selected="selected"<?php endif?>><?php echo __('Title', 'kboard')?></option>
    				<option value="content"<?php if(kboard_target() == 'content'):?> selected="selected"<?php endif?>><?php echo __('Content', 'kboard')?></option>
    				<option value="member_display"<?php if(kboard_target() == 'member_display'):?> selected="selected"<?php endif?>><?php echo __('Author', 'kboard')?></option>
    			</select>
    			<input type="text" name="keyword" value="<?php echo kboard_keyword()?>">
    			<button type="submit" class="kboard-default-button-small"><?php echo __('Search', 'kboard')?></button>
    		</form>
    	</div>
    	<!-- 검색폼 끝 -->
    	
    	<?php if($board->isWriter()):?>
    	<!-- 버튼 시작 -->
    	<div class="kboard-control">
    		<a href="<?php echo $url->set('mod', 'editor')->toString()?>" class="kboard-default-button-small"><?php echo __('New', 'kboard')?></a>
    	</div>
    	<!-- 버튼 끝 -->
    	<?php endif?>
    	
    	<div class="kboard-default-poweredby">
    		<a href="http://www.cosmosfarm.com/products/kboard" onclick="window.open(this.href);return false;" title="<?php echo __('KBoard is the best community software available for WordPress', 'kboard')?>">Powered by KBoard</a>
    	</div>
    </div>

     

  • 안녕하세요.

    커뮤니티에서는 100% 해결을 보장해드리기 어렵습니다.

    또한 저희가 매번 코드를 작성해드리는 건 현실적으로 불가능합니다.

    직접 코드 수정이 어려우실 경우

    저희 고객지원 쪽 이메일로 유료 기술지원 요청을 부탁드립니다.

    고맙습니다.

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