WordPress纯代码屏蔽垃圾评论

1、通过Wordpress后台设置中的“讨论”来阻止垃圾评论。
WordPress纯代码屏蔽垃圾评论

2、在主题function.php文件中添加代码实现防垃圾评论。关于防垃圾评论效果,请自行在本页评论全英文、带日文、带连接的话句测试:

// WordPress禁止全英文,不包括汉字的评论  
function refused_spam_comments( $comment_data ) {   
$pattern = '/[一-龥]/u';   
if(!preg_match($pattern,$comment_data['comment_content'])) {   
err('对不起,评论提交失败。评论中必须含中文!');   
}   
return( $comment_data );   
}   
add_filter('preprocess_comment','refused_spam_comments');  
  
// WordPress禁止日文评论  
function BYMT_comment_jp_post( $incoming_comment ) {  
$jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';  
if(preg_match($jpattern, $incoming_comment['comment_content'])){  
err( "对不起,评论提交失败。评论中禁止发日文字符!" );  
}  
return( $incoming_comment );  
}  
add_filter('preprocess_comment', 'BYMT_comment_jp_post');  
  
//Wordpress评论禁止发链接地址  
function lianyue_comment_post( $incoming_comment ) {   
$http = '/[href="|rel="nofollow"|http:\/\/|<\/a>]/u';  
if(preg_match($http, $incoming_comment['comment_content'])) {  
err( "对不起,评论提交失败。评论中禁止发链接地址!" );   
}   
return( $incoming_comment );   
}   
add_filter('preprocess_comment', 'lianyue_comment_post');   

以下转自第二个博客
1.屏蔽关键词,email,url,ip:

//屏蔽关键词,email,url,ip  
function Shield_fuckspam($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");  
        err(__('不好意思,您的评论违反龙砚庭博客评论规则'));  
    } else {  
        return $comment;  
    }  
}  
add_filter('preprocess_comment', 'Shield_fuckspam');  

2.屏蔽没有中文和纯日文

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);  
}  
    add_filter('preprocess_comment', 'refused_spam_comments');  

3.屏蔽长连接评论

function lang_url_spamcheck($approved, $commentdata) {  
    return (strlen($commentdata['comment_author_url']) > 50) ?  
    'spam' : $approved;  
}  
add_filter('pre_comment_approved', 'lang_url_spamcheck', 99, 2);  

4.屏蔽昵称,评论内容带链接的评论

function Shield_link($comment_data) {  
    $links = '/http:\/\/|https:\/\/|www\./u';  
    if (preg_match($links, $comment_data['comment_author']) || preg_match($links, $comment_data['comment_content'])) {  
        err(__('别啊,昵称和评论里面添加链接会怀孕的哟!!'));  
    }  
    return ($comment_data);  
}  
    add_filter('preprocess_comment', 'Shield_link');  

最后两条选其一就行了,部分功能重复了,因为屏蔽了长链接自然也屏蔽了评论内容带链接的评论。

5.限制评论字数:

function limit_comment_length( $commentdata ) {  
    $minCommentlength = 5; //最少字数限制  
    $maxCommentlength = 200; //最多字数限制  
    $pointCommentlength = mb_strlen($commentdata['comment_content'],'UTF8'); //mb_strlen 1个中文字符当作1个长度  
    if ( $pointCommentlength < $minCommentlength ){  
    header("Content-type: text/html; charset=utf-8");  
    err('抱歉,您的评论太短了,请至少输入' . $minCommentlength .'个字(已输入'. $pointCommentlength .'个字)');  
    exit;  
}  
    if ( $pointCommentlength > $maxCommentlength ){  
    header("Content-type: text/html; charset=utf-8");  
    err('抱歉,您的评论太长了,请少于' . $maxCommentlength .'个字(已输入'. $pointCommentlength .'个字)');  
    exit;  
}  
return $commentdata;  
}  
add_filter( 'preprocess_comment', 'limit_comment_length' );  

规则要根据网址内容所决定,如果网站会出现日文,或者允许用户发表带有链接的文字或者图片则应该只写:

//屏蔽没有中文的评论  
function refused_spam_comments( $comment_data ) {     
$pattern = '/[一-龥]/u';     
if(!preg_match($pattern,$comment_data['comment_content'])) {     
err('评论提交失败,评论必须含中文!You should type some Chinese character!  
');     
} return( $comment_data ); } add_filter('preprocess_comment','refused_spam_comments');  

加入代码后刷新网站。发现前端、后台打不开/空白,说明函数文件定义了相同的函数(一般来说,是已经集合了该功能,解决方法:不用加该段代码或者修改该函数为其他);
加入代码后测试功能是否有效时,出现网站框架错位(居中显示),说明使用的主题自定义了报错输出的函数(一般来说,是err取代wp_die,解决方法:将代码的里面的wp_die改为err,如果还无效,说明不是err这个函数,请自行寻找。)
加入代码后测试功能是否有效时,出现网站输出一串英文报错(例如:Fatal error: Uncaught Error: Call to undefined function err() in),说明使用的主题没有自定义报错输出函数err(解决方法:将代码里面的err改回Wordpress自带的报错函数wp_die。)

参考文章:
纯代码实现屏蔽垃圾评论
http://loomob.com/57.html
如何通过纯代码实现WordPress防垃圾评论
https://www.wn789.com/3940.html


 继续浏览关于 技术WordPress 的文章

 本文最后更新于 2019/07/21 04:02:02,可能因经年累月而与现状有所差异

 引用转载请注明:icret > 教程 > WordPress纯代码屏蔽垃圾评论