WordPress去掉多說評論之后,,經(jīng)常有各種垃圾評論出現(xiàn)在后臺,。不堪其擾,于是去找了一些辦法來解決這個(gè)問題,。
一般都是說加一些屏蔽過濾的函數(shù)之類的,。其實(shí)都差不多。不過有些特別長的就顯得有點(diǎn)累贅了,。
當(dāng)然比起官方的垃圾過濾插件肯定功能沒那么強(qiáng)大,,但是最起碼會讓你的身材很好看。不會在你的數(shù)據(jù)庫弄那么多東西進(jìn)去,。
今天分享幾個(gè)實(shí)用小代碼吧,。我都用過,而且效果還不錯(cuò),。大家也可以試試,,不錯(cuò)可以收藏一下。
第一招:禁止非法詞匯評論提交到數(shù)據(jù)庫
把下邊的代碼放到當(dāng)前主題的 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','Banfuckspam');
當(dāng)評論的內(nèi)容,、評論者名稱,、URL、電子郵件或IP地址中包含其中任何關(guān)鍵字時(shí),,系統(tǒng)將會禁止提交到數(shù)據(jù)庫,。
一行一個(gè)關(guān)鍵字或IP地址。WordPress也會在詞中匹配關(guān)鍵字,例如“press”亦將匹配“WordPress”,。
第二招:限制WordPress評論字?jǐn)?shù)
首先把下邊的代碼放到當(dāng)前主題的 functions.php 里,,注意修改最小字?jǐn)?shù):
//限制WordPress評論最少字?jǐn)?shù)function limit_comment_length( $commentdata ){$minlength = 12;//評論最少字?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', 'limit_comment_length', 8 );
此代碼還支持中文字?jǐn)?shù),。這段代碼可以限制WordPress評論的最少字符數(shù),。
當(dā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è)長度if ( $pointCommentlength < $minCommentlength ){header("Content-type: text/html; charset=utf-8");wp_die('抱歉,,您的評論太短了,,請至少輸入' . $minCommentlength .'個(gè)字(已輸入'. $pointCommentlength .'個(gè)字)');exit;}if ( $pointCommentlength > $maxCommentlength ){header("Content-type: text/html; charset=utf-8");wp_die('抱歉,您的評論太長了,,請少于' . $maxCommentlength .'個(gè)字(已輸入'. $pointCommentlength .'個(gè)字)');exit;}return $commentdata;}add_filter( 'preprocess_comment', 'limit_comment_length' );
加上評論字?jǐn)?shù)限制以及關(guān)鍵詞屏蔽后已經(jīng)可以屏蔽大部分垃圾評論了,。這個(gè)你可以自己試試看。
還有評論怎么辦,?看看下面這個(gè)終極殺手锏,!
第三招:WordPress評論過濾日文字符和純英文
還是把代碼放到當(dāng)前主題的 functions.php 里即可。兩函數(shù)還可拆開執(zhí)行,。效果差不多,。
//評論過濾 function refused_spam_comments( $comment_data ) { $pattern = '/[一-龥]/u'; $jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';if(!preg_match($pattern,$comment_data['comment_content'])) { err('寫點(diǎn)漢字吧,博主外語很捉急,!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'); }
這段代碼可以讓評論必須包含中文且不包含日文,,純英文也不行。當(dāng)然如果你和國際友人有來往,。就別弄了,。
如果你使用的是Ajax無刷新評論可能會出現(xiàn)頁面錯(cuò)位等。把上面的代碼中的wp_die
換成err
即可,。
使用上面這幾招應(yīng)該可以屏蔽絕大部分的垃圾評論了,。如果你又更好的方法,歡迎在下面評論里分享,。