안녕하세요
워드프레스 게시판 KBoard(케이보드) 사용중입니다.
최신글 모아보기에서 avatar 스킨을 사용중에 질문이 있습니다
게시물을 업로드하면 제목을 "김@@님이 게시물을 작성하였습니다" 라고 특정 문구로 변경 가능할까요?
김@@ 이런식으로 제목에서 작성자 이름 뒷부분도 마스킹 된 형태로 가능한지도 궁금합니다.
감사합니다 완벽하게 해결되었습니다!!! 고생 많으셨습니다!!
비로그인 사용자에게도 적용하시려면
제목 태그는 PHP uniqid 함수를 활용해서 의미없는 고유한 문자열로 적용하고
게시글을 표시할 때만 작성자명을 마스킹 처리해서 표시하면 될 듯합니다.
기존의 코드 대신 아래의 코드를 활용해보시겠어요?
add_filter('kboard_get_template_field_html', 'kboard_get_template_field_html_20200630', 10, 4);
function kboard_get_template_field_html_20200630($html, $field, $content, $board){
if($board->id == '1' && $field['meta_key'] == 'title'){ // 실제 게시판 id로 적용해주세요.
ob_start();
?>
<input type="hidden" name="title" value="<?php echo uniqid()?>">
<?php
$html = ob_get_clean();
}
return $html;
}
add_filter('kboard_content_value', 'kboard_content_value_20200630', 10, 3);
function kboard_content_value_20200630($value, $name, $content){
$board = $content->getBoard();
if($board->id == '1' && $name == 'title'){ // 실제 게시판 id로 적용해주세요.
$value = "{$content->getObfuscateName('@')}님이 게시물을 작성하였습니다.";
}
return $value;
}
위의 코드에서 $board->id == '1' 부분은 실제 게시판 id로 적용해주세요.
고맙습니다.
감사합니다! 많은 가르침을 얻었습니다~ 한가지 더 질문 가능 할까요?
적용 시키니 로그인 하지 않은 사용자가 게시물을 남겼을때는 작성자 이름이 뜨지 않는 현상이 나타납니다..!
최신글 모아보기 latest.php 파일에서는 <?php echo $content->getObfuscateName('*')?> 이렇게 적용시키니 김**이라고 뜨는데
<input type="hidden" name="title" value="<?php echo $obfuscate_name?>님이 게시물을 작성하였습니다.">
위에서 <?php echo $obfuscate_name?> 이 부분을 어떻게 고쳐야
로그인하지 않은 사용자가 직접 입력한 이름에서 마스킹되서 제목에 나오나요?
안녕하세요~^^
KBoard 게시글 작성 시 제목은 별도로 입력하지 않는지요?
입력 필드 설정을 지원하는 스킨에서 제목 필드를 안 보이게 하고
제목에 "김@@님이 게시물을 작성하였습니다"처럼 적용되는 방법을 안내해드리겠습니다.
아래의 코드를 활용해보세요.
add_filter('kboard_get_template_field_html', 'kboard_get_template_field_html_20200630', 10, 4);
function kboard_get_template_field_html_20200630($html, $field, $content, $board){
if($board->id == '1' && !$content->uid && $field['meta_key'] == 'title'){ // 실제 게시판 id로 적용해주세요.
$current_user = wp_get_current_user();
$member_display = $current_user->display_name;
$strlen = mb_strlen($member_display, 'utf-8');
$replace = '@';
if($strlen > 3){
$showlen = 2;
}
else{
$showlen = 1;
}
$obfuscate_name = mb_substr($member_display, 0, $showlen, 'utf-8') . str_repeat($replace, $strlen-$showlen);
ob_start();
?>
<input type="hidden" name="title" value="<?php echo $obfuscate_name?>님이 게시물을 작성하였습니다.">
<?php
$html = ob_get_clean();
}
return $html;
}
위의 코드에서 $board->id == '1' 부분은 실제 게시판 id로 적용해주세요.
테마의 functions.php 파일에 코드를 추가하거나 Code Snippets 플러그인을 사용해서 코드를 추가할 수 있습니다.
고맙습니다.