在之前的利用代码清理WordPress数据库,让其运动起来一文中介绍了在数据库中直接清理垃圾评论的相关代码以及清理待审核评论的方式,前提是需要有数据库操作权限。今天介绍一种从源头上来合理控制垃圾评论的产生,特别是全英文、日文、俄文、阿拉伯文等垃圾评论,直接添加相应的代码即可,无需插件,毕竟插件过多也会影响到运行的速度,特别是低配VPS主机以及一些限制非常严格的虚拟主机!
1、屏蔽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');
如果使用的XIU主题可以添加到functions.xiu.php中即可!
这种方法如果还无法避免垃圾评论,因为只需要有一个中文字即可以通过,那么可以在当前使用的主题functions.php添加如下代码!
注意事项:
如果您的主题没有使用comments-ajax.php评论,那么请用wp_die输出错误信息!
处理方法:将下面所有的err换成wp_die!否则会出现500错误!
2禁止全英文和日文评论,请用以下代码:
// 禁止全英文和日文评论 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');
3、禁止俄语评论:
//禁止俄语 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');
4、禁止韩语评论:
//禁止朝鲜半岛幸福人民留言(朝鲜语/韩语) 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');
5、禁止阿拉伯语评论:
//禁止阿拉伯语 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');
6、禁止泰语评论:
//禁止泰语 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');
更多语种可以按照上面的思路进行修改即可!
注:以上代码来源于网络,具体修改源站BYMT已经关闭很长一段时间了!