워드프레스에서 모든 신규 댓글을 휴지통으로 이동시키기 (사용자 정의 코드)

이 워드프레스 블로그에는 정상적인 댓글도 간혹 달리지만 스팸 댓글이 많이 달려서 몇 가지 방법으로 스팸 댓글에 대응해 왔습니다.

  1. 댓글 길이가 너무 짧거나 너무 길면 댓글이 달리지 않도록 코드 추가
  2. 모든 신규 댓글을 휴지통으로 이동시키고, 정상적인 댓글만 복원하고 나머지 스팸 댓글들은 모두 영구 삭제

하지만 클라우드웨이즈(Cloudways)의 Breeze 플러그인에서 댓글 상태를 체크하는 코드에 댓글을 휴지통으로 이동시키는 경우를 고려하지 않아서 방문자들이 댓글을 등록하면 치명적인 오류가 발생하는 문제가 발생하고 있습니다. 이 문제를 회피하기 위해 간단한 코드를 만들어서 차일드 테마의 함수 파일에 추가했습니다.

워드프레스에서 모든 신규 댓글을 휴지통으로 이동시키기

워드프레스 블로그에 달리는 많은 스팸 댓글들은 댓글 내용이 1~2단어로 짧거나, 일부 댓글은 반대로 너무 긴 경우도 있습니다. 댓글이 너무 길면 삭제하는 것이 번거롭습니다.

그래서 저는 현재 댓글 단어수가 5단어 미만이거나 250단어 이상인 경우 댓글이 달리지 않도록 코드를 추가했습니다.

워드프레스 댓글 단어수 제한

이렇게 댓글 길이를 제한하면 스팸 댓글이 많이 줄어드는 것 같습니다.

그리고 정상적인 댓글은 하루 1~2개 정도이지만 스팸 댓글은 하루 100개 이상이 달리기 때문에 저는 모든 신규 댓글이 휴지통으로 이동하도록 설정하고 정상적인 댓글만 복원한 다음, 나머지 댓글들은 모두 삭제하는 방식으로 대처하고 있습니다.

워드프레스 알림판 » 설정 » 토론 » 허용하지 않는 댓글 키워드에서 점(.)을 입력하면 새로 달리는 모든 댓글이 휴지통으로 이동하게 됩니다.

워드프레스 모든 댓글을 휴지통으로 이동

Akismet 등과 같은 플러그인을 사용하는 것보다 이 방법이 개인적으로 편리하여 이용하고 있었습니다만, 클라우드웨이즈(Cloudways)의 캐시 플러그인인 Breeze이 업데이트되면서 이 방법으로 댓글을 휴지통으로 보내는 경우에 치명적인 오류가 발생했습니다.

클라우드웨이즈에 라이브 채팅으로 고객센터에 연락하니 곧바로 문제를 해결해주었습니다. 어떻게 해결했는지 물어보니 Breeze 플러그인의 purge-cache.php 파일을 수정했다는 답변을 들었습니다.

Please be informed that the issue was resolved by making some changes in the code of the breeze plugin, in file wp-content/plugins/breeze/inc/cache/purge-cache.php. Rest assured, the issue has been resolved now.

하지만 Breeze 플러그인이 업데이트되면서 수정된 파일이 다시 Breeze 플러그인 파일로 대체되어 문제가 다시 발생했습니다.

다시 수정된 purge-cache.php 파일로 대체하면 문제가 해결되었지만, Breeze 플러그인이 업데이트될 때마다 매번 파일을 바꾸는 것은 너무 번거로운 것 같아서 간단한 코드로 플러그인을 만들어 추가하여 임시로 문제를 해결했습니다.

// 비로그인 사용자의 댓글을 휴지통으로 이동시키는 함수
function move_non_logged_in_comments_to_trash( $comment_id ) {
    // 사용자가 로그인하지 않은 경우
    if ( ! is_user_logged_in() ) {
        // 댓글을 휴지통으로 이동
        wp_trash_comment( $comment_id );
    }
}

// 댓글이 제출될 때 함수를 실행하도록 후크에 연결
add_action( 'comment_post', 'move_non_logged_in_comments_to_trash' );

위와 같은 코드를 차일드 테마의 함수 파일에 추가하면 비로그인 사용자(게스트)가 제출하는 모든 신규 댓글이 휴지통으로 이동하게 됩니다.

위의 코드를 클라우드웨이즈 담당자에게 보내어 검토를 요청하니 로그인 사용자와 비로그인 사용자 모두에 대하여 적용되도록 코드를 수정할 것을 제안했습니다.😄

function move_all_comments_to_trash( $comment_id ) { 
    wp_trash_comment( $comment_id ); 
} 

add_action( 'comment_post', 'move_all_comments_to_trash' );

상황에 따라 이 두 코드 중 하나를 자식 테마(하위 테마)의 함수 파일(functions.php)에 추가하면 모든 신규 댓글이 휴지통으로 이동하게 될 것입니다.

혹시 클라우드웨이즈의 Breeze 플러그인을 사용하고 있고, 모든 신규 댓글을 휴지통으로 이동시키고 싶은 경우 설정 » 토론의 "허용하지 않는 댓글 키워드" 기능을 사용하는 대신, 상기에 제시된 코드를 사용하면 치명적인 오류가 발생하는 문제가 나타나지 않습니다.

추후 Breeze 플러그인에서 치명적인 오류가 발생하는 문제를 수정하도록 업데이트되면 이 글에 제시된 코드를 제거할 수 있을 것입니다.

마치며

워드프레스 사이트의 방문자가 늘면 스팸 댓글도 함께 증가합니다. 과거에는 주로 영어, 일본어, 중국어 등 외국어로 된 댓글이 많았지만 요즘은 한글로 된 댓글도 증가하고 있습니다.

특히 이 블로그에는 먹튀검증소 관련 한국어 댓글이 꾸준히 달리고 있습니다. 먹튀 피해를 막는 가장 확실한 방법... 이런 댓글인데요. 불법적인 사이트를 홍보하는 댓글인 것 같습니다.

참고

댓글 남기기

댓글 남기기