워드프레스 블로그를 운영하다 보면 하루에 10개가 넘게도 쌓이는 스팸 댓글 때문에 골머리를 앓는 게 한두 번이 아닙니다.
블랙리스트를 사용해 특정 단어들만 차단해둬도 9할은 차단하긴 합니다만, 가끔 괴상한 내용으로 블랙리스트를 피하는 댓글이 있습니다.

Akismet 등의 스팸 차단 플러그인도 괜찮은 선택지일 수 있겠지만, 한글로 블로그를 운영하면 굳이 무거운 플러그인 붙여다 스팸을 차단할 필요가 있나 싶습니다.
글 작성자도 한글을 쓰니, 정상적인 댓글 작성자도 한글을 쓰게 되어있습니다. 스팸 댓글 봇은 - 아직 제가 본 것들에 한하면 - 한글을 쓰지 않기에, 한글 포함 여부만 확인하면 대부분을 거를 수 있습니다.

functions.php 수정

function checkPostedComment( $comment_ID, $comment_approved ) {
    if ( 1 === $comment_approved ) {
        $text = get_comment_text ( $comment_ID );
        $pattern = "/[ㄱ-ㅎ|가-힣]/i";
    
        if (!preg_match( $pattern, $text )) {
            wp_delete_comment ( $comment_ID );
        }
    }
}

add_action( 'comment_post', 'checkPostedComment', 10, 2 );

댓글이 추가되면 checkPostedComment가 실행되고, 승인된 댓글에 한글이 없으면 차단하는 코드입니다.
대괄호 안의 내용을 바꾸면 조금 더 세분화하여 차단할 수 있습니다.

[가-힣] : 자모를 합쳐 온전한 글자가 있을 때만 차단하지 않습니다. (eg. 가나다)
[ㄱ-ㅎ|가-힣] : 위와 동일하나 초성만 있어도 차단하지 않습니다. (eg. ㄱㄱ)
[ㄱ-ㅎ|ㅏ-ㅣ|가-힣] : 위와 동일하나 모음만 있어도 차단하지 않습니다. (eg. ㅖ)

결과

comment removed

정상적으로 작동한다면 한글이 없는 댓글을 작성하면 바로 휴지통으로 갑니다.

profile

이메일은 공개되지 않습니다.

주의 : 비밀 댓글 사용 시 수정 기능을 이용할 수 있는 시간이 지나면 작성자도 내용 확인이 불가능합니다.
    loading