屏蔽WordPress垃圾評論的三種方法

2014-07-17 09:10:26來源:欲思博客作者:

WordPress去掉多說評論之后,經(jīng)常有各種垃圾評論出現(xiàn)在后臺。不堪其擾,于是去找了一些辦法來解決這個問題。一般都是說加一些屏蔽過濾的函數(shù)之類的。其實都差不多。不過有些特別長的就顯得有點累贅了。

WordPress去掉多說評論之后,經(jīng)常有各種垃圾評論出現(xiàn)在后臺。不堪其擾,于是去找了一些辦法來解決這個問題。

一般都是說加一些屏蔽過濾的函數(shù)之類的。其實都差不多。不過有些特別長的就顯得有點累贅了。

當然比起官方的垃圾過濾插件肯定功能沒那么強大,但是最起碼會讓你的身材很好看。不會在你的數(shù)據(jù)庫弄那么多東西進去。

Wordpress教程:三招教你快速屏蔽WordPress垃圾評論

今天分享幾個實用小代碼吧。我都用過,而且效果還不錯。大家也可以試試,不錯可以收藏一下。

第一招:禁止非法詞匯評論提交到數(shù)據(jù)庫

把下邊的代碼放到當前主題的 functions.php 里,然后在后臺“討論”中設(shè)置你的黑名單即可。

//禁止垃圾評論提交到數(shù)據(jù)庫
function Banfuckspam($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('你是不是在米國罵慣了總統(tǒng)。。這里是天朝,趕緊修改非法詞匯吧!');
    }  else  {
        return $comment;
    }
}
add_filter('preprocess_comment', 'v7v3_fuckspam');

當評論的內(nèi)容、評論者名稱、URL、電子郵件或IP地址中包含其中任何關(guān)鍵字時,系統(tǒng)將會禁止提交到數(shù)據(jù)庫。

一行一個關(guān)鍵字或IP地址。WordPress也會在詞中匹配關(guān)鍵字,例如“press”亦將匹配“WordPress”。

第二招:限制WordPress評論字數(shù)

首先把下邊的代碼放到當前主題的 functions.php 里,注意修改最小字數(shù):

//限制WordPress評論最少字數(shù)
function limit_comment_length( $commentdata ){
	$minlength = 12;//評論最少字數(shù)
	preg_match_all( '/./u', trim( $commentdata['comment_content'] ), $maxlength );
	$maxlength = count( $maxlength[0] );
	if( $maxlength < $minlength ) wp_die( '吐槽最少需要 ' . $minlength . ' 字才能完成!' );
	return $commentdata;
}
add_filter( 'preprocess_comment', 'Bing_minimal_comment_length', 8 );

此代碼還支持中文字數(shù)。這段代碼可以限制WordPress評論的最少字符數(shù)。

當然,如果你覺得太多了也不行,還可以試試下面這段代碼。效果更佳。

//評論字數(shù)限制
function limit_comment_length( $commentdata ) {
$minCommentlength = 5; //最少字數(shù)限制
$maxCommentlength = 200; //最多字數(shù)限制
$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 .'個字)');
exit;
}
if ( $pointCommentlength > $maxCommentlength )
{
header("Content-type: text/html; charset=utf-8");
wp_die('抱歉,您的評論太長了,請少于' . $maxCommentlength .'個字(已輸入'. $pointCommentlength .'個字)');
exit;
}
return $commentdata;
}
add_filter( 'preprocess_comment', 'v7v3_comment_length' );

加上評論字數(shù)限制以及關(guān)鍵詞屏蔽后已經(jīng)可以屏蔽大部分垃圾評論了。這個你可以自己試試看。

還有評論怎么辦?看看下面這個終極殺手锏!

第三招:WordPress評論過濾日文字符和純英文

還是把代碼放到當前主題的 functions.php 里即可。兩函數(shù)還可拆開執(zhí)行。效果差不多。

//評論過濾 
function refused_spam_comments( $comment_data ) { 
$pattern = '/[一-龥]/u'; 
$jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';
if(!preg_match($pattern,$comment_data['comment_content'])) { 
err('寫點漢字吧,博主外語很捉急!You should type some Chinese word!'); 
} 
if(preg_match($jpattern, $comment_data['comment_content'])){
err('日文滾粗!Japanese Get out!日本語出て行け! You should type some Chinese word!'); 
}
return( $comment_data ); 
} 
if( dopt('d_spamComments_b') ){
add_filter('preprocess_comment','refused_spam_comments');
 }

這段代碼可以讓評論必須包含中文且不包含日文,純英文也不行。當然如果你和國際友人有來往。就別弄了。

如果你使用的是Ajax無刷新評論可能會出現(xiàn)頁面錯位等。把上面的代碼中的wp_die換成err即可。

使用上面這幾招應(yīng)該可以屏蔽絕大部分的垃圾評論了。如果你又更好的方法,歡迎在下面評論里分享。

關(guān)鍵詞:WordPress

贊助商鏈接: