관리자만 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?>
고맙습니다.
감사합니다^^ 좋은 주말 보내세요