안녕하세요? :)
아래 링크에 문의드렸던 내용에 이어지는 질문을 드리고자 합니다. https://www.cosmosfarm.com/threads/document/44333
종종 댓글로 코드문을 입력하다보니, 꺽쇠기호를 모두 비활성화하는 방법을 사용하지 못하고 있습니다.
코드문을 입력하기 위해 <pre> 태그를 사용하고 있는데요. <pre> 태그 안에 있는 꺽쇠기호를 > 와 < 로 입력하면 문제가 해결되지만, 댓글을 저만 남기는 것이 아닌 다른 사용자와 같이 남기다보니 보다 근본적인 해결책이 필요하여 문의를 드리게 되었습니다.
<pre> 태그 안에 있는 꺽쇠기호는 > 와 < 로 인식하도록 하는 방법이 있을까요?
현재는 <pre>A1>=A2</pre> 로 댓글로 입력하면, >= 기호의 꺽쇠가 태그문으로 인식되어 해당페이지 레이아웃이 깨지는 문제가 발생합니다.
방법이 있을 경우 조언해주시면 감사하겠습니다.
항상 친절한 답변에 미리 감사드립니다.
처음 올려주셨던 코드를 사용시,
기존의 모든 댓글이 <pre> 태그 안에 반복되는 문제가 있어, 아래와 같이 수정 후 문제 해결하였습니다.^^
감사합니다.
<?php
/******************************************
* K보드 <pre> 태그 안 꺾쇠 일반 기호로 변경
******************************************/
add_filter('kboard_comments_content', 'kboard_comments_content_20200818', 10, 3);
function kboard_comments_content_20200818($content, $comment_uid, $content_uid){
$comment = new KBComment();
$comment->initWithUID($comment_uid);
$board = $comment->getBoard();
if($board->id == '1'){ // 실제 게시판 id로 적용해주세요.
$replace = preg_replace('/<pre>(.*)<\/pre>/i', htmlspecialchars('$1'), $content);
//$replace = htmlspecialchars($replace);
$content = $replace;
// $content = preg_replace('/<pre>(.*)<\/pre>/i', $replace, $content);
}
return $content;
}
안녕하세요. 빠른 답변 감사드립니다.
테스트 후 문제 있을 경우 답글로 문의드리도록 하겠습니다. :)
도움이 되실지 모르겠지만
아래의 코드를 추가하시면
KBoard 댓글 입력 시 워드프레스 내장 에디터를 사용하실 수 있습니다.
add_action('kboard_skin_header', 'kboard_skin_header_20200818', 10, 1);
function kboard_skin_header_20200818($builder){
$board = $builder->board;
if($board->id == '1'){ // 실제 게시판 id로 적용해주세요.
if(!defined('KBOARD_COMMENTS_WP_EDITOR')){
define('KBOARD_COMMENTS_WP_EDITOR', '1');
}
}
}
테마의 functions.php 파일에 코드를 추가하거나 Code Snippets 플러그인을 사용해서 코드를 추가할 수 있습니다.
고맙습니다.
안녕하세요~^^
htmlspecialchars 함수와 정규식을 활용하면
<pre> 태그 내에 추가되는 태그를 HTML 엔티티로 변환하실 수 있습니다.
아래의 코드를 활용해보시겠어요?
add_filter('kboard_comments_content', 'kboard_comments_content_20200818', 10, 3);
function kboard_comments_content_20200818($content, $comment_uid, $content_uid){
$comment = new KBComment();
$comment->initWithUID($comment_uid);
$board = $comment->getBoard();
if($board->id == '1'){ // 실제 게시판 id로 적용해주세요.
$replace = preg_replace('/<pre>(.*)<\/pre>/i', '$1', $content);
$replace = htmlspecialchars($replace);
$content = preg_replace('/<pre>(.*)<\/pre>/i', '<pre>'.$replace.'</pre>', $content);
}
return $content;
}
위의 코드에서 $board->id == '1' 부분은 실제 게시판 id로 적용해주세요.
버그가 있을 수도 있으니 충분히 테스트해보시겠어요?
고맙습니다.