首先禁止一些帶有非法詞彙的評論提交到數據庫,代碼如下:

//禁止垃圾評論提交到數據庫
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="/%20target=_blank%20class=infotextkey>:history.go(-1);"> 返回文章頁</a>
');
}  else  {
return $comment;
}
}
add_filter('preprocess_comment', 'wxd_fuckspam');

在主題的 functions.php 文件加入以上代碼後然後在 WordPress 後台設置評論黑名單詞彙如下圖:

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 。