最近幾天有位小夥伴一直在群裡問小編如何來遮蔽 WordPress 的垃圾評論,其實小編之前發過很多 WordPress 遮蔽的垃圾評論的方法,不過貌似最近出現了很多不同型別的垃圾評論,有中文的,有英文的,有日文的,甚至還有多國語言混合在一起。不過由於小編設定了很多層的評論限制所以一直沒有遇到垃圾評論的騷擾,不過可苦了一些沒有防範的小夥伴了。如果不是最近群裡有位小夥伴一直在問小編這個事小編還真不知道現在垃圾評論這麼猖狂了。好了閒話扯了那麼多教程開始~
首先禁止一些帶有非法詞彙的評論提交到資料庫,程式碼如下:
//禁止垃圾評論提交到資料庫
function wxd_fuckspam($comment) {
if( is_user_logged_in()){ return $comment;} //登入使用者無壓力...
if( wp_blacklist_check($comment['comment_author'],$comment['comment_author_email'],$comment['comment_author_url'], $comment['comment_content'], $comment['comment_author_IP'], $comment['comment_agent'] )){
header("Content-type: text/html; charset=utf-8");
wp_die('
您評論包含辱罵,過激或者違反法律等言論,或者您的 IP 已被加入黑名單,如有疑問請聯絡管理員處理!<a href=""> 返回文章頁</a>
');
} else {
return $comment;
}
}
add_filter('preprocess_comment', 'wxd_fuckspam');
在主題的 functions.php 檔案加入以上程式碼後然後在 WordPress 後臺設定評論黑名單詞彙如下圖:

可能一些新人一下在還找不到在哪設定 WordPress 評論黑名單關鍵詞。 (PS:登入後臺後點選設定裡面的討論選項即可看到評論黑名單了。) 設定完評論黑名單後就能防住部分非法廣告評論了,當然你也可以把一些經常發垃圾評論的 ip 加入到黑名單,這樣就可以遮蔽該 IP 在你網站上評論了。
接下來是評論字數的限制,最近一些群發的中文垃圾評論都是事先採集好一些小說片段後者笑話片段然後帶上網址批次群發到 WordPress 上,對於這種評論關鍵詞黑名單就很難遮蔽住了,不過透過觀察可以看出這類評論一般都是長篇大論的,所以我們可以限制評論的字數來達到遮蔽效果,程式碼如下:
//評論字數限制
function wxd_comment_length( $commentdata ) {
$minCommentlength = 3; //最少字數限制
$maxCommentlength = 220; //最多字數限制
$pointCommentlength = mb_strlen($commentdata['comment_content'],'UTF8'); //mb_strlen 1 箇中文字元當作 1 個長度
if ( $pointCommentlength < $minCommentlength )
{
header("Content-type: text/html; charset=utf-8");
wp_die('
抱歉,您的評論太短了,請至少輸入' . $minCommentlength .'個字 (已輸入'. $pointCommentlength .'個字)<a href=""> 返回文章頁</a>
');
exit;
}
if ( $pointCommentlength > $maxCommentlength )
{
header("Content-type: text/html; charset=utf-8");
wp_die('
抱歉,您的評論太長了,請少於' . $maxCommentlength .'個字 (已輸入'. $pointCommentlength .'個字)<a href=""> 返回文章頁</a>
');
exit;
}
return $commentdata;
}
add_filter( 'preprocess_comment', 'wxd_comment_length' );
加上評論字數限制以及關鍵詞遮蔽後已經可以遮蔽大部分垃圾評論了,但是部分比較短的英文評論和日語評論還是遮蔽不了,其實我們可以讓評論必須包含中文且不包含日文,即可遮蔽這類垃圾評論了,程式碼如下:
function wxd_comment_post( $incoming_comment ) {
$pattern = '/[一-龥]/u';
$jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';
if(!preg_match($pattern, $incoming_comment['comment_content'])) {
header("Content-type: text/html; charset=utf-8");
wp_die( "
寫點漢字吧,博主外語很捉急! Please write some chinese words!<a href='javascript:history.go(-1);'> 返回文章頁</a>
");
exit;
}
if(preg_match($jpattern, $incoming_comment['comment_content'])){
header("Content-type: text/html; charset=utf-8");
wp_die( "
日文滾粗!Japanese Get out!日本語出て行け!<a href='javascript:history.go(-1);'> 返回文章頁</a>
");
exit;
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'wxd_comment_post');
將以上方法一起時候後基本上隨機的群發的垃圾評論已經騷擾不到你了,不過要是有人針對你的站,特意的製造垃圾評論的話那就要依靠伺服器來遮蔽 UA 來預防了。
最後說下以上程式碼都是加到當前使用的主題的 functions.php 檔案裡即可~
差點忘了說如果你們使用的是 Ajax 無重新整理評論的話要把函式裡的 wp_die 替換為 err
以下是幾篇相關的文章,大家也可以配合本文中的方法一起使用:
WordPress 防採集防惡意爬蟲的一點思路 (PS: 此文提到了判斷 UA 的方法)
WordPress 遮蔽所有非中文系語種垃圾評論的方法 (PS: 此文介紹的是根據評論語系來遮蔽垃圾評論)