이 블로그에서는 30개 이상의 댓글이 달리면 1개 정도가 정상적인 댓글일 정도로 스팸 댓글이 많이 달리고 있습니다. 이 때문에 저는 모든 댓글이 휴지통으로 이동하도록 하였고, 휴지통에서 정상적인 댓글을 확인하여 승인하고 나머지 스팸 댓글들은 영구적으로 삭제하고 있습니다.
최근 들어 엄청난 길이의 스팸 댓글들이 달리기도 합니다. 그리고 종종 "좋은 글 감사합니다"와 같은 의미 없는 댓글도 올라오는 경우도 있습니다.
내용이 너무 긴 댓글이나 너무 짧은 댓글은 달리지 않도록 코드를 추가해 보았습니다. 이제 10단어보다 짧거나 300단어보다 긴 댓글을 달면 경고가 표시되도록 했습니다. 300단어로 제한해보고, 효과가 없으면 200단어로 낮추어서 테스트할 생각입니다. (※업데이트: 최소 8단어, 최대 250단어로 변경했습니다.)

워드프레스 댓글 단어 수 제한하기
예전에도 그랬지만 요즘 들어 특히 너무 긴 스팸 댓글들이 자주 달리고 있습니다. 어제 밤에 달린 댓글 중 하나의 단어수를 체크해보니 1만 단어가 넘네요.

이 블로그의 이전 글에서 글자수를 체크하여 댓글 길이를 제한하는 방법에 대하여 살펴본 적이 있습니다.
문자수 대신 단어수를 체크하여 제한하도록 코드를 변경해보았습니다.
// 댓글 길이 제한하기
// Displays a warning if the comment has fewer than 10 words or more than 300 words.
add_filter('preprocess_comment', 'wpb_preprocess_comment');
function wpb_preprocess_comment($comment) {
// 댓글 내용의 단어 수를 계산
$word_count = count(preg_split('/\s+/', trim($comment['comment_content']), -1, PREG_SPLIT_NO_EMPTY));
if ($word_count > 300) {
wp_die('댓글이 너무 깁니다. 댓글은 300단어까지 입력할 수 있습니다.', '댓글 길이 에러', array('back_link' => true));
}
if ($word_count < 10) {
wp_die('댓글이 너무 짧습니다. 최소 10단어 이상이 되어야 합니다.', '댓글 길이 에러', array('back_link' => true));
}
return $comment;
}
이전 코드를 바탕으로 조금 수정했습니다. wp_die 함수에 back_link 파라미터를 추가하여 에러 페이지에 '뒤로가기' 링크를 포함시켰습니다. 이제 에러 페이지에 '뒤로 가기' 링크가 표시되어 사용자들이 쉽게 댓글 작성 화면으로 되돌아갈 수 있습니다.
댓글 길이가 너무 짧거나 너무 길면 다음과 같은 오류 페이지가 표시됩니다.

워드프레스는 티스토리 등에 비해 많은 스팸 댓글이 달릴 수 있습니다. Akismet과 같은 플러그인을 사용하면 스팸 댓글에 효과적으로 대응할 수 있습니다. 티스토리도 스팸이 증가하여 "좋은 글 잘 읽고 갑니다"와 같은 의미 없는 댓글이 늘어나고 있습니다. 티스토리의 경우 스팸 댓글 휴지통 보내기 기능을 활성화하면 쓰레기 댓글들을 줄일 수 있습니다.

앞서 설명했듯이 저는 모든 댓글을 휴지통으로 보내고, 휴지통 내의 댓글들을 확인하여 정상적인 댓글들을 복구시켜 공개하는 방법을 이용하고 있습니다. 스팸 댓글만 휴지통으로 보내는 방법도 있지만, 일부 스팸 댓글들이 필터링되지 않고 정상적인 댓글이 스팸으로 인식되기도 합니다.
상기 코드는 FTP에 접속하여 차일드 테마 내의 함수 파일에 추가하시기 바랍니다.
워드프레스나 티스토리에서 스팸 댓글을 필터링하는 기능을 사용하면, 완벽하게 스팸을 걸러내지는 못하고 간혹 정상적인 댓글을 스팸으로 인식하기도 하지만, 스팸에 효과적으로 대처할 수 있을 것입니다.
댓글 남기기