×

主题开发

WordPress主题开发经验教程分享

免插件多方位屏蔽WordPress垃圾评论

王超 2019-09-25 主题开发 1,238 次

网站用心做了一段时间,浏览量慢慢的上去了,随之而来的就是删不完的垃圾评论,天天看到这些真是让人心烦,总想骂人。冷静下来想想还是想办法解决问题吧,于是找了度娘,发现了一篇文章感觉方法很全面,所以自己也就先试用了一下,发现确实有效,下面分享给大家,有需要的赶紧拿走用吧。

禁止非法词汇评论提交到数据库的方法:

1、将以下代码放到当前主题的functions.php文件最后一个?>的前面:

  1. //屏蔽关键词,email,url,ip
  2. function Shield_fuckspam($comment) {
  3.     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'])) {
  4.         header("Content-type: text/html; charset=utf-8");
  5.         err(__('不好意思,您的评论违反龙砚庭博客评论规则'));
  6.     } else {
  7.         return $comment;
  8.     }
  9. }
  10. add_filter('preprocess_comment', 'Shield_fuckspam');

2、在WordPress后台“设置” > “讨论” > 评论黑名单中添加相应的垃圾评论关键词即可。如在黑名单中添加“信用卡”,那么当评论的内容、评论者名称、URL、电子邮件或IP地址中包含其中任何关键字(如信用卡)时,系统将会禁止提交到数据库

其他防WordPress垃圾评论的代码:

接下来再分享几段实用的小代码,配合使用也是能够起到拦截垃圾评论的作用,以下代码同样扔到函数文件即可(如functions.php 我多实在的人啊,每次都要提醒是哪个常用的函数文件):

1、过滤外文(如纯英文或日文)评论

  1. //屏蔽纯英文评论和纯日文
  2. function refused_english_comments($incoming_comment) {
  3. 	$pattern = '/[一-龥]/u';
  4. 	// 禁止全英文评论
  5. 	if(!preg_match($pattern, $incoming_comment['comment_content'])) {
  6. 		wp_die( "您的评论中必须包含汉字!" );
  7. 	}
  8. 	$pattern = '/[あ-んア-ン]/u';
  9. 	// 禁止日文评论
  10. 	if(preg_match($pattern, $incoming_comment['comment_content'])) {
  11. 		wp_die( "评论禁止包含日文!" );
  12. 	}
  13. 	return( $incoming_comment );
  14. }
  15. add_filter('preprocess_comment', 'refused_english_comments');

2、屏蔽长连接评论

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

3、屏蔽昵称,评论内容带链接的评论

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

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

4、限制评论最少字数和最多字数

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

结合禁止非法词汇评论提交到数据库的代码和过滤外文(如纯英文或日文)评论的代码,一般情况下垃圾评论就基本没有了。当然,我们还需要持续不断地给评论黑名单中添加新内容,这样防御力度才会更加强悍。

文章标签:

WordPress日记主要承接WordPress主题定制开发PSD转WordPressWordPress仿站以及以WordPress为管理后端的小程序、APP,我们一直秉持“做一个项目,交一个朋友”的理念,希望您是我们下一个朋友。如果您有WordPress主题开发需求,可随时联系QQ:919985494