최신글 모아보기 작성자 및 게시물 제목 관련 하여 질문드립니다.

안녕하세요

워드프레스 게시판 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로 적용해주세요.

    고맙습니다.

  • 감사합니다 완벽하게 해결되었습니다!!! 고생 많으셨습니다!!

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