K보드 댓글 입력시 꺽쇠기호 처리 방법 재 문의 드립니다.

안녕하세요? :)

아래 링크에 문의드렸던 내용에 이어지는 질문을 드리고자 합니다. https://www.cosmosfarm.com/threads/document/44333

종종 댓글로 코드문을 입력하다보니, 꺽쇠기호를 모두 비활성화하는 방법을 사용하지 못하고 있습니다.

코드문을 입력하기 위해 <pre> 태그를 사용하고 있는데요. <pre> 태그 안에 있는 꺽쇠기호를 &gt; 와 &lt; 로 입력하면 문제가 해결되지만, 댓글을 저만 남기는 것이 아닌 다른 사용자와 같이 남기다보니 보다 근본적인 해결책이 필요하여 문의를 드리게 되었습니다.

<pre> 태그 안에 있는 꺽쇠기호는 &gt; 와 &lt; 로 인식하도록 하는 방법이 있을까요?

현재는 <pre>A1>=A2</pre> 로 댓글로 입력하면, >= 기호의 꺽쇠가 태그문으로 인식되어 해당페이지 레이아웃이 깨지는 문제가 발생합니다.

방법이 있을 경우 조언해주시면 감사하겠습니다.

항상 친절한 답변에 미리 감사드립니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    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로 적용해주세요.

    버그가 있을 수도 있으니 충분히 테스트해보시겠어요?

    고맙습니다.

  • 도움이 되실지 모르겠지만

    아래의 코드를 추가하시면

    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 플러그인을 사용해서 코드를 추가할 수 있습니다.

    고맙습니다.

  • 안녕하세요. 빠른 답변 감사드립니다.

    테스트 후 문제 있을 경우 답글로 문의드리도록 하겠습니다. :)

     

  • 처음 올려주셨던 코드를 사용시,

    기존의 모든 댓글이 <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;
    }

     

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