WordPress去掉多說(shuō)評(píng)論之后,經(jīng)常有各種垃圾評(píng)論出現(xiàn)在后臺(tái)。不堪其擾,于是去找了一些辦法來(lái)解決這個(gè)問(wèn)題。
一般都是說(shuō)加一些屏蔽過(guò)濾的函數(shù)之類的。其實(shí)都差不多。不過(guò)有些特別長(zhǎng)的就顯得有點(diǎn)累贅了。
當(dāng)然比起官方的垃圾過(guò)濾插件肯定功能沒(méi)那么強(qiáng)大,但是最起碼會(huì)讓你的身材很好看。不會(huì)在你的數(shù)據(jù)庫(kù)弄那么多東西進(jìn)去。

今天分享幾個(gè)實(shí)用小代碼吧。我都用過(guò),而且效果還不錯(cuò)。大家也可以試試,不錯(cuò)可以收藏一下。
第一招:禁止非法詞匯評(píng)論提交到數(shù)據(jù)庫(kù)
把下邊的代碼放到當(dāng)前主題的 functions.php 里,然后在后臺(tái)“討論”中設(shè)置你的黑名單即可。
//禁止垃圾評(píng)論提交到數(shù)據(jù)庫(kù)
function Banfuckspam($comment) {
if( is_user_logged_in()){ return $comment;} //登錄用戶無(wú)壓力...
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('你是不是在米國(guó)罵慣了總統(tǒng)。。這里是天朝,趕緊修改非法詞匯吧!');
} else {
return $comment;
}
}
add_filter('preprocess_comment', 'v7v3_fuckspam');
當(dāng)評(píng)論的內(nèi)容、評(píng)論者名稱、URL、電子郵件或IP地址中包含其中任何關(guān)鍵字時(shí),系統(tǒng)將會(huì)禁止提交到數(shù)據(jù)庫(kù)。
一行一個(gè)關(guān)鍵字或IP地址。WordPress也會(huì)在詞中匹配關(guān)鍵字,例如“press”亦將匹配“WordPress”。
第二招:限制WordPress評(píng)論字?jǐn)?shù)
首先把下邊的代碼放到當(dāng)前主題的 functions.php 里,注意修改最小字?jǐn)?shù):
//限制WordPress評(píng)論最少字?jǐn)?shù)
function limit_comment_length( $commentdata ){
$minlength = 12;//評(píng)論最少字?jǐn)?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 );
此代碼還支持中文字?jǐn)?shù)。這段代碼可以限制WordPress評(píng)論的最少字符數(shù)。
當(dāng)然,如果你覺(jué)得太多了也不行,還可以試試下面這段代碼。效果更佳。
//評(píng)論字?jǐn)?shù)限制
function limit_comment_length( $commentdata ) {
$minCommentlength = 5; //最少字?jǐn)?shù)限制
$maxCommentlength = 200; //最多字?jǐn)?shù)限制
$pointCommentlength = mb_strlen($commentdata['comment_content'],'UTF8'); //mb_strlen 1個(gè)中文字符當(dāng)作1個(gè)長(zhǎng)度
if ( $pointCommentlength < $minCommentlength )
{
header("Content-type: text/html; charset=utf-8");
wp_die('抱歉,您的評(píng)論太短了,請(qǐng)至少輸入' . $minCommentlength .'個(gè)字(已輸入'. $pointCommentlength .'個(gè)字)');
exit;
}
if ( $pointCommentlength > $maxCommentlength )
{
header("Content-type: text/html; charset=utf-8");
wp_die('抱歉,您的評(píng)論太長(zhǎng)了,請(qǐng)少于' . $maxCommentlength .'個(gè)字(已輸入'. $pointCommentlength .'個(gè)字)');
exit;
}
return $commentdata;
}
add_filter( 'preprocess_comment', 'v7v3_comment_length' );
加上評(píng)論字?jǐn)?shù)限制以及關(guān)鍵詞屏蔽后已經(jīng)可以屏蔽大部分垃圾評(píng)論了。這個(gè)你可以自己試試看。
還有評(píng)論怎么辦?看看下面這個(gè)終極殺手锏!
第三招:WordPress評(píng)論過(guò)濾日文字符和純英文
還是把代碼放到當(dāng)前主題的 functions.php 里即可。兩函數(shù)還可拆開(kāi)執(zhí)行。效果差不多。
//評(píng)論過(guò)濾
function refused_spam_comments( $comment_data ) {
$pattern = '/[一-龥](méi)/u';
$jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';
if(!preg_match($pattern,$comment_data['comment_content'])) {
err('寫(xiě)點(diǎn)漢字吧,博主外語(yǔ)很捉急!You should type some Chinese word!');
}
if(preg_match($jpattern, $comment_data['comment_content'])){
err('日文滾粗!Japanese Get out!日本語(yǔ)出て行け! You should type some Chinese word!');
}
return( $comment_data );
}
if( dopt('d_spamComments_b') ){
add_filter('preprocess_comment','refused_spam_comments');
}
這段代碼可以讓評(píng)論必須包含中文且不包含日文,純英文也不行。當(dāng)然如果你和國(guó)際友人有來(lái)往。就別弄了。
如果你使用的是Ajax無(wú)刷新評(píng)論可能會(huì)出現(xiàn)頁(yè)面錯(cuò)位等。把上面的代碼中的wp_die換成err即可。
使用上面這幾招應(yīng)該可以屏蔽絕大部分的垃圾評(píng)論了。如果你又更好的方法,歡迎在下面評(píng)論里分享。
