안녕하세요
워드프레스 게시판 KBoard(케이보드) 사용중입니다.
최신글 모아보기에서 avatar 스킨을 사용중에 질문이 있습니다
게시물을 업로드하면 제목을 "김@@님이 게시물을 작성하였습니다" 라고 특정 문구로 변경 가능할까요?
김@@ 이런식으로 제목에서 작성자 이름 뒷부분도 마스킹 된 형태로 가능한지도 궁금합니다.
안녕하세요~^^
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 플러그인을 사용해서 코드를 추가할 수 있습니다.
고맙습니다.
감사합니다! 많은 가르침을 얻었습니다~ 한가지 더 질문 가능 할까요?
적용 시키니 로그인 하지 않은 사용자가 게시물을 남겼을때는 작성자 이름이 뜨지 않는 현상이 나타납니다..!
최신글 모아보기 latest.php 파일에서는 <?php echo $content->getObfuscateName('*')?> 이렇게 적용시키니 김**이라고 뜨는데
<input type="hidden" name="title" value="<?php echo $obfuscate_name?>님이 게시물을 작성하였습니다.">
위에서 <?php echo $obfuscate_name?> 이 부분을 어떻게 고쳐야
로그인하지 않은 사용자가 직접 입력한 이름에서 마스킹되서 제목에 나오나요?
비로그인 사용자에게도 적용하시려면
제목 태그는 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로 적용해주세요.
고맙습니다.
감사합니다 완벽하게 해결되었습니다!!! 고생 많으셨습니다!!