wordpress评论验证码:非插件实现wordpress屏蔽英语、日语、俄语、韩语、阿拉伯语、泰语等外语垃圾评论!

人红是非多,个人博客也是一样,随着我这个小博客流量的增长,垃圾评论也随之而来。

为WordPress 评论增加验证码

而且最多的竟然是西伯利亚战斗民族的垃圾评论。是不是垃圾评论我不知道,反正俄文我看不懂。如下图

西伯利亚战斗民族的垃圾评论

本来想直接关闭评论功能,但是想到还是有很多朋友需要进行正常的交流的,关闭评论不到最后实在是不合适。

只能想办法了,这里真的必须吐槽wordpress的验证问题,注册没验证码, 评论还没验证码, 虽然我知道wordpress插件多,搞个验证码插件啥非常多。

但是特么的,插件多了,wordpress运行慢也是让人头疼的啊,wordpress团队自己搞个验证码功能不行么?

抱怨归抱怨,还是要行办法,百度,找到很多教程,都是用wordpress验证码插件

如:wordpress插件,Some Chinese Please插件就可以拦截不带中文字的评论,用起来很不错,而且不写入数据库,可以有效地减少spam对服务器的额外负担,其实我们完全没有必要使用插件,直接使用代码就可以实现。

但是我并不想用,如果你们想用,可以自己百度搜索,很多文章。

非插件实现wordpress评论验证码

功夫不负有心人,找到了一个教程文章,实现非插件实现屏蔽英语、日语、俄语、韩语、阿拉伯语、泰语等外语垃圾评论

好了废话不多说直接切入正题,先看一般人需要的

非插件实现屏蔽wordpress无中文的评论,有效避免垃圾评论

将以下代码添加到wordpress主题的functions.php中的函数闭合前

/* 评论必须包含中文 拦截spam */ 
function refused_spam_comments( $comment_data ) { 
$pattern = '/[一-龥]/u'; 
if(!preg_match($pattern,$comment_data['comment_content'])) { 
err('写点汉字吧,博主外语很捉急! Please write some chinese words!'); 
} 
return( $comment_data ); 
} 
add_filter('preprocess_comment','refused_spam_comments');

效果如下图所示:

非插件实现屏蔽wordpress无中文的评论,有效避免垃圾评论

如果你和我一样也有很多非英语的垃圾评论,那就接着看下面的教程。

非插件实现屏蔽英语、日语、俄语、韩语、阿拉伯语、泰语等外语垃圾评论

同样的还是将以下代码添加到wp主题的functions.php中的函数闭合前。

注意事项:由于现在多数主题都采用comments-ajax.php处理提交,用err输出错误信息,如果您的主题没有使用comments-ajax.php评论,那么请用wp_die输出错误信息!

处理方法:将下面所有的err换成wp_die!否则会出现500错误!

如果您没用有我前面所说的方法屏蔽全英文,请用以下代码:

// 禁止全英文和日文评论
function BYMT_comment_post( $incoming_comment ) {
$pattern = '/[一-龥]/u';
$jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';
if(!preg_match($pattern, $incoming_comment['comment_content'])) {
err( "写点汉字吧,博主外语很捉急! Please write some chinese words!" );
}
if(preg_match($jpattern, $incoming_comment['comment_content'])){
err( "禁止日文评论" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'BYMT_comment_post');

如果你已经用了屏蔽全英文的代码了,那么请使用以下代码:

// 禁止日文评论
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');

当然了不只是这些,通过以上原理我们还能屏蔽其他语言的垃圾评论:比如下面的示例

禁止俄语评论

//禁止俄语
function BYMT_comment_ru_post( $incoming_comment ) {
$ruattern ='/[А-я]+/u';
if(preg_match($ruattern, $incoming_comment['comment_content'])){
err( "禁止俄语" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'BYMT_comment_ru_post');

禁止韩语评论

//禁止朝鲜半岛幸福人民留言(朝鲜语/韩语)
function BYMT_comment_kr_post( $incoming_comment ) {
$krattern ='/[갂-줎]+|[줐-쥯]+|[쥱-짛]+|[짞-쪧]+|[쪨-쬊]+|[쬋-쭬]+|[쵡-힝]+/u';
if(preg_match($krattern, $incoming_comment['comment_content'])){
err( "不要用韩语/朝鲜语思密达!" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'BYMT_comment_kr_post');

禁止阿拉伯语评论

//禁止阿拉伯语
function BYMT_comment_ar_post( $incoming_comment ) {
$arattern ='/[؟-ض]+|[ط-ل]+|[م-م]+/u';
if(preg_match($arattern, $incoming_comment['comment_content'])){
err( "不要用阿拉伯语!" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'BYMT_comment_ar_post');

禁止泰语评论

//禁止泰语
function BYMT_comment_th_post( $incoming_comment ) {
$thattern ='/[ก-๛]+/u';
if(preg_match($thattern, $incoming_comment['comment_content'])){
err( "禁止泰语!" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'BYMT_comment_th_post');

更多语种需要大家自己去研究了!

当然了地下室先生也没屏蔽这么多,只屏蔽了纯英文和日语和俄语!爱折腾的朋友,赶快去试试吧!

wordpress垃圾评论的问题就先这样了,还有注册验证码的问题没有解决,也是折腾。

本文参考:http://www.luoxiao123.cn/6129.html

未经允许不得转载:地下室先生博客 » wordpress评论验证码:非插件实现wordpress屏蔽英语、日语、俄语、韩语、阿拉伯语、泰语等外语垃圾评论!

赞 (0) 打赏作者

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏