[워드프레스] 댓글에서 HTML 비활성화하기

워드프레스의 댓글 폼에 보면 "다음의 HTML 태그와 속성을 사용할 수 있습니다: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>" 와 같은 안내 문구가 나옵니다. (나오지 않는다면 테마에서 나오지 않도록 처리한 것입니다.) 이처럼 워드프레스의 댓글 시스템에는 여러 가지 HTML 태그를 사용할 수 있습니다.

[워드프레스] 댓글에서 HTML 비활성화하기

개인적으로도 WordPress 사이트에서 "<blockquote> ...</blockquote>" 태그를 많이 사용하는 편입니다. 하지만 스패머들이 이런 태그를 사용하여 댓글을 많이 다는 경우나 이런 태그의 사용을 금지하고 싶은 경우가 있을 수 있습니다.

HTML 태그가 활성화되면 코드 스니핏(Code snippet)을 추가하면 제대로 추가되지 않습니다. 이전 테마에서는 Nicedit라는 에디터를 댓글 폼에 연결시켜 코드 스니핏을 쉽게 추가할 수 있도록 했습니다(참고).

이 에디터도 나름대로 괜찮은 것 같습니다. 기본 에디터 대신 CKeditor를 사용해도 다양한 기능을 구현할 수 있습니다.

워드프레스 댓글에 HTML 태그를 사용하지 않도록 설정하기

이번에는 기본 워드프레스 댓글 에디터를 사용하기로 하고 대신 HTML을 비활성화시켰습니다. 댓글에 HTML을 사용하지 못하도록 하려면 다음 함수를 사용하면 됩니다.

// 코멘트가 게시될 때 작동
function plc_comment_post( $incoming_comment ) {
// 코멘트의 모든 것을 문자 그대로 표시
$incoming_comment['comment_content'] = htmlspecialchars($incoming_comment['comment_content']);
// 작은 따옴표 제외 - 워드프레스에서 스팸으로 표시한다고 하네요
$incoming_comment['comment_content'] = str_replace( "'", '&apos;', $incoming_comment['comment_content'] );
return( $incoming_comment );
}
// 코멘트가 표시된 후에 작동
function plc_comment_display( $comment_to_display ) {
// Put the single quotes back in
$comment_to_display = str_replace( '&apos;', "'", $comment_to_display );
return $comment_to_display;
}

이제 HTML 코드를 댓글에 추가하면 무시됩니다.

HTML 코드가 그대로 댓글에 표시되도록 하기

사실 저는 HTML 코드가 그대로 댓글에 표시되기를 원합니다. 위의 방법 대신 다음 필터를 워드프레스 함수 파일에 추가하면 HTML 태그가 작동하지 않지만 문자 그대로 표시됩니다.

add_filter('comment_text', 'wp_filter_nohtml_kses');
add_filter('comment_text_rss', 'wp_filter_nohtml_kses');
add_filter('comment_excerpt', 'wp_filter_nohtml_kses');
// Source: stackoverflow

하지만 댓글을 승인하여 게시하는 경우 제대로 작동하지 않는 것 같습니다. 시간이 날 때 방법을 찾아봐야 할 것 같습니다. 우선 &lt;&gt;를 사용하여 <...>를 표시할 수 있습니다.

참고:

일부 글에 제휴 링크가 포함될 수 있으며 파트너스 활동으로 일정액의 수수료를 받을 수 있습니다.

댓글 남기기

* 이메일 정보는 공개되지 않습니다.