일반 방문객은 IP를 앞 두자리만 볼 수 있게 할 수 있을까요?

관리자만 IP 4자리를 다 볼 수 있고 , 일반 방문객은 IP를 앞 두자리만 볼 수 있게 할 수 있을까요?

*중요한 점은 게시판 ID가 1만 쓰는게 아니고 2 까지 같이 쓴다는 전제하입니다.

1 과 2 게시판 양쪽 모두에서 쓰게 될 경우 어떻게 해야할까요?

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

    IP는 KBoard 기본 입력 필드를 말씀하시는 걸까요?

    아래의 코드를 활용해보시겠어요?

    add_filter('kboard_document_add_option_value_field_html', 'kboard_document_add_option_value_field_html_20210910', 10, 4);
    function kboard_document_add_option_value_field_html_20210910($html, $field, $content, $board){
    	$meta_key = isset($field['meta_key']) ? $field['meta_key'] : '';
    	$field_name = isset($field['field_name']) ? $field['field_name'] : $field['field_label'];
    	
    	if(in_array($board->id, array('1', '2')) && !$board->isAdmin() && $meta_key == 'ip' && $content->option->{$meta_key}){ // 실제 게시판 id로 적용해주세요.
    		$value = array();
    		$value = explode('.', $content->option->ip);
    		if(isset($value[2]) && $value[2] && isset($value[3]) && $value[3]){
    			$strlen = mb_strlen($value[2], 'utf-8');
    			$value[2] = str_repeat('*', $strlen);
    			$strlen = mb_strlen($value[3], 'utf-8');
    			$value[3] = str_repeat('*', $strlen);
    			$value = implode('.', $value);
    			
    			$html = '<div class="kboard-document-add-option-value meta-key-' . $meta_key . '"><span class="option-name">' . $field_name . '</span><span class="option-separator"> : </span>';
    			$html .= '<span class="option-value">' . $value . '</span></div><hr>';
    		}
    	}
    	
    	return $html;
    }

    위의 코드에서 in_array($board->id, array('1', '2')) 부분이 여러 개의 게시판에 적용하는 코드입니다.

    위와 같이 적용하시면 1번 게시판과 2번 게시판에 적용하실 수 있습니다.

    in_array($board->id, array('1', '2', '3', '4')) 이런 식으로 더 늘려서 활용하실 수도 있습니다.

     

    그리고 위의 코드에 적용된 !$board->isAdmin() 코드로 관리자가 아닐 때만 코드를 실행할 수 있습니다.

     

    테마의 functions.php 파일에 코드를 추가하거나 Code Snippets 플러그인을 사용해서 코드를 추가할 수 있습니다.

    고맙습니다.

  • 안녕하세요^^ 구체적인 설명 감사합니다. 그런데 제가 말씀드린건
    글과 덧글 둘 다 관리자만 IP 4자리를 다 볼 수 있고 , 일반 방문객은 IP를 앞 두자리만 볼 수 있게 할 수 있을지 였는데

     

    가르쳐주신 코드로는 글 본문의 IP는 가려지지만, 덧글의 IP는 그대로 나옵니다.

     

    덧글의 IP도 방문자에겐 앞 2자리만 보이도록 수정된 코드를 알려주실 수 있으실까요? ^^ 항상 감사합니다.

     

    https://imgur.com/a/Dz2ZLJu

    혹시 몰라서 현재 상태 캡처 올립니다.

  • 댓글 쪽은 별도로 코드를 추가하신 건지요?

    추가한 코드를 에디터의 코드 스니펫 삽입 기능을 사용해서 올려주시겠어요?

    고맙습니다.

  • add_action('kboard_comments_field', 'my_kboard_comments_field_210827', 10, 4);
    function my_kboard_comments_field_210827($field_html, $board, $content_uid, $commentBuilder){
    	if(in_array($board->id, array('1','2'))){ // 실제 게시판 id로 적용해주세요.
    		?>
    		<input type="hidden" name="comment_option_ip" value="<?php echo kboard_user_ip()?>">
    		<?php
    	}
    }

    테마 functions.php

    <?php if($comment->option->ip):?>(<?php echo $comment->option->ip?>)<?php endif?>

    wp-content/plugins/kboard-comments/skin/사용중인스킨/list-template.php

     

    안녕하세요. 빠른 답장 감사드립니다. ^^

    '덧글에도 IP노출' 은 저번에 위와 같이 알려주셔서 넣었던 상태입니다!

    이외에 다른 커스텀 코드는 전혀 없습니다. 감사합니다.

     

    혹시나 참조가 되실까봐서 제가 [저번에 문의를 남겼던 스레드의 링크]도 같이 넣습니다.

     

  • /wp-content/plugins/kboard-comments/skin/사용중인스킨/list-template.php 파일에

    아래의 코드를 추가하셨는지요?

    <?php if($comment->option->ip):?>(<?php echo $comment->option->ip?>)<?php endif?>

    위의 코드 대신 아래의 코드를 활용해보시겠어요?

    <?php if(in_array($board->id, array('1', '2')) && $comment->option->ip):?>
    	<?php
    	$comment_ip = '';
    	$value = array();
    	$value = explode('.', $comment->option->ip);
    	if(!$board->isAdmin() && isset($value[2]) && $value[2] && isset($value[3]) && $value[3]){
    		$strlen = mb_strlen($value[2], 'utf-8');
    		$value[2] = str_repeat('*', $strlen);
    		$strlen = mb_strlen($value[3], 'utf-8');
    		$value[3] = str_repeat('*', $strlen);
    		$comment_ip = implode('.', $value);
    	}?>
    	(<?php echo $comment_ip ? $comment_ip : $comment->option->ip?>)
    <?php endif?>

    고맙습니다.

  • 감사합니다^^ 좋은 주말 보내세요

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