안녕하세요 글쓴이 익명 기능을 사용하고 있는데요.

//아이피주소관리자만 확인
add_filter('kboard_document_add_option_value_field_data', 'my_kboard_document_add_option_value_field_data', 10, 3);
function my_kboard_document_add_option_value_field_data($field, $content, $board){
	if(isset($field['meta_key']) && $field['meta_key'] == 'ip' && !$board->isAdmin()){
		return array();
	}
	return $field;
}
// 익명 암호화
add_action('kboard_document_insert', 'my_kboard_document_insert', 10, 4);
function my_kboard_document_insert($content_uid, $board_id, $content, $board){
	if(!is_user_logged_in()){
		$content->option->ip = kboard_user_ip();
	}
	
	$content->member_display = uniqid();
	$content->updateContent();
}

add_action('kboard_comments_insert', 'my_kboard_comments_insert', 10, 3);
function my_kboard_comments_insert($insert_id, $content_uid, $board){
	$content = new KBContent();
	$content->initWithUID($content_uid);
	
	$comment = new KBComment();
	$comment->initWithUID($insert_id);
	
	if(is_user_logged_in()){
		if($comment->user_uid == $content->member_uid){
			$comment->user_display = $content->member_display . ' (작성자)';
		}
	}
	else if($content->option->ip == kboard_user_ip()){
		$comment->user_display = $content->member_display . ' (작성자)';
	}
	$comment->update();
}
add_action('kboard_comments_field', 'my_kboard_comments_field', 10, 4);
function my_kboard_comments_field($field_html, $board, $content_uid, $commentBuilder){
	?>
	<input type="hidden" name="comment_option_ip" value="<?php echo kboard_user_ip()?>">
	<?php
}

상위처럼 

해당하는 스킨의 Funtion.php 파일을 수정하여  게시물의 작성자를 익명 으로 처리 하고 있는데요

회원이 글을 작성시 "익명이" 라고 작성자에 출력하고 싶고 

또한 관리자 로그인시 작성자 탭에 원래 닉네임 이 출력되도록 하고 싶습니다.

혹시 이게 가능할까요?

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
  • 안녕하세요~^^

    테마 쪽에 별도로 코드를 추가한 경우,

    추가한 코드만 올려주시길 부탁드립니다.

    본문에 코드는 추가하신 코드만 표시되게 저희 쪽에서 수정했습니다.

     

    kboard_document_insert 액션에 추가된 아래의 코드는

    게시글 작성자명에 유니크한 값을 넣게 됩니다.

    $content->member_display = uniqid();

    그렇기 때문에 실제 작성자명을 관리자는 확인할 수 있게 하시려면

    kboard_user_display 필터를 활용해주셔야 합니다.

     

    kboard_user_display 필터를 활용해서 작성자를 익명으로 처리하는 방법은

    저희 커뮤니티에 검색해보시면 관련 자료를 찾을 수 있습니다.

    원하시는 답변이 있는지 확인해보시겠어요?

    https://www.cosmosfarm.com/search?q=%EC%9E%91%EC%84%B1%EC%9E%90+%EC%9D%B5%EB%AA%85

    고맙습니다.

  • 아 감사합니다!!!!!

     

    https://www.cosmosfarm.com/threads/document/22687  요게시물을 참고 해서 해보도록 할께요!!!!!

     

  • // 익명 암호화
    add_action('kboard_document_insert', 'my_kboard_document_insert', 10, 4);
    function my_kboard_document_insert($content_uid, $board_id, $content, $board){
    	if(!is_user_logged_in()){
    		$content->option->ip = kboard_user_ip();
    	}
    	
    	$content->member_display = uniqid();
    	$content->updateContent();
    }
    
    add_action('kboard_comments_insert', 'my_kboard_comments_insert', 10, 3);
    function my_kboard_comments_insert($insert_id, $content_uid, $board){
    	$content = new KBContent();
    	$content->initWithUID($content_uid);
    	
    	$comment = new KBComment();
    	$comment->initWithUID($insert_id);
    	
    	if(is_user_logged_in()){
    		if($comment->user_uid == $content->member_uid){
    			$comment->user_display = $content->member_display . ' (작성자)';
    		}
    	}
    	else if($content->option->ip == kboard_user_ip()){
    		$comment->user_display = $content->member_display . ' (작성자)';
    	}
    	$comment->update();
    }
    add_action('kboard_comments_field', 'my_kboard_comments_field', 10, 4);
    function my_kboard_comments_field($field_html, $board, $content_uid, $commentBuilder){
    	?>
    	<input type="hidden" name="comment_option_ip" value="<?php echo kboard_user_ip()?>">
    	<?php
    }

    흠 상위 코드를

     

    //아이피주소관리자만 확인
    add_filter('kboard_document_add_option_value_field_data', 'my_kboard_document_add_option_value_field_data', 10, 3);
    function my_kboard_document_add_option_value_field_data($field, $content, $board){
    	if(isset($field['meta_key']) && $field['meta_key'] == 'ip' && !$board->isAdmin()){
    		return array();
    	}
    	return $field;
    }
    // 익명 암호화 뉴버전
    add_filter('kboard_user_display', 'my_kboard_user_display', 10, 5);
    function my_kboard_user_display($user_display, $user_id, $user_name, $plugin, $builder){
    	if(!$builder->board->isAdmin()){
    		$strlen = mb_strlen($user_display, 'utf-8');
    		if($strlen > 3){
    			$showlen = 2;
    		}
    		else{
    			$showlen = 1;
    		}
    		
    		$user_display = mb_substr($user_display, 0, $showlen, 'utf-8') . str_repeat('익명이', $strlen-$showlen);
    	}
    	
    	return $user_display;
    }

    요렇게 바꾸었는데요 아무 변화가 없어서 ..... 도와주세요 !!!!

     

    그리고 참고 페이지 보니까 Document.php 에

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

    이코드를 삽입해야 하는데 어디에 삽입 해야 하는지를 모르겠어요.ㅜㅜ

    마찮가지로 list.php 도 마찮가지구요.

    댓글 플러그인에도 
     

    <?php echo apply_filters('kboard_user_display', get_avatar($comment->user_uid, 24, '', $comment->user_display).' '.$comment->user_display, $comment->user_uid, $comment->user_display, 'kboard-comments', $commentBuilder)?>

    요걸 넣어야 할거 같은데 어디다 넣어야 할지를 모르겠습니다.ㅓㅜㅜ

  • 최신 버전의 KBoard 플러그인을 사용 중이시라면

    스킨 파일을 수정하지 않으셔도 됩니다.

    게시글 document.php 파일과 list.php 파일, 댓글 쪽에도

    kboard_user_display 관련 필터를 별도로 추가하지 않으셔도 됩니다.

    고맙습니다.

  • 안녕하세요~~

    지금

    //아이피주소관리자만 확인
    add_filter('kboard_document_add_option_value_field_data', 'my_kboard_document_add_option_value_field_data', 10, 3);
    function my_kboard_document_add_option_value_field_data($field, $content, $board){
    	if(isset($field['meta_key']) && $field['meta_key'] == 'ip' && !$board->isAdmin()){
    		return array();
    	}
    	return $field;
    }
    // 익명 암호화 뉴버전
    add_filter('kboard_user_display', 'my_kboard_user_display', 10, 5);
    function my_kboard_user_display($user_display, $user_id, $user_name, $plugin, $builder){
    	if(!$builder->board->isAdmin()){
    		$strlen = mb_strlen($user_display, 'utf-8');
    		if($strlen > 3){
    			$showlen = 2;
    		}
    		else{
    			$showlen = 1;
    		}
    		
    		$user_display = mb_substr($user_display, 0, $showlen, 'utf-8') . str_repeat('익명이', $strlen-$showlen);
    	}
    	
    	return $user_display;
    }

    요렇게 변경해놓고 테스트 중인데 

    작성자의 닉네임이 '익명이' 라고 나오지도 않고 관리자 권한으로 로그인을 하여도 본래의 닉네임이 안나오는데 어떻게 수정해야 할까요?

     

     

    요런식으로 작성자가 익명이로 표시 되지 않고 그대로 출력됩니다.

    그리고 지금 로그인한 상태 인데 관리자 로그인을 해도 그대로 보여지네요 ㅠㅠ

     

    도와주세욤 ㅠㅠ

  • 안녕하세요.

    이전 댓글에서도 설명을 드렸지만

    kboard_document_insert 액션에 추가된 아래의 코드는

    게시글 작성자명에 유니크한 값을 넣게 됩니다.

    $content->member_display = uniqid();

    그렇기 때문에 관리자에게는 실제 작성자명을 표시하려면 위의 코드를 지워주셔야 합니다.

     

    또, 관리자가 아닌 사용자에겐 작성자명을 "익명이"로 표시되게 하시려면

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

    $strlen = mb_strlen($user_display, 'utf-8');
    if($strlen > 3){
    	$showlen = 2;
    }
    else{
    	$showlen = 1;
    }
    
    $user_display = mb_substr($user_display, 0, $showlen, 'utf-8') . str_repeat('익명이', $strlen-$showlen);

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

    $user_display = '익명이';

    고맙습니다.

  • 자꾸 귀찮게 해드려서 죄송합니다.

     

    //아이피주소관리자만 확인
    add_filter('kboard_document_add_option_value_field_data', 'my_kboard_document_add_option_value_field_data', 10, 3);
    function my_kboard_document_add_option_value_field_data($field, $content, $board){
    	if(isset($field['meta_key']) && $field['meta_key'] == 'ip' && !$board->isAdmin()){
    		return array();
    	}
    	return $field;
    }
    // 익명 암호화 뉴버전
    add_filter('kboard_user_display', 'my_kboard_user_display', 10, 5);
    function my_kboard_user_display($user_display, $user_id, $user_name, $plugin, $builder){
    	if(!$builder->board->isAdmin()){
    		$user_display = '익명이';
    }

    $user_sisplay = '익명이';  로 수정을 했는데.

    $content->member_display = uniqid();

    요문구는 찾을수가 없는데 어떻게해야 할까요 ㅜㅜ

  • 본문에 올려주신 코드에는 해당 코드가 있습니다.

    해당 코드를 적용한 상태에서 게시글을 작성할 경우

    작성자명에 유니크한 값이 들어가게 됩니다.

    만약, 해당 코드가 현재는 적용되어 있지 않다면 이미 지우신 듯합니다.

    고맙습니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요