WordPress 如何有效拦截和过滤垃圾评论

WordPress 如何有效拦截和过滤垃圾评论

2018年12月24日 阅读 1574 字数 815 评论 2 喜欢 1

熊猫使用WordPress建站大概有两三年了,垃圾评论一直都是个问题,后台一天能拦截几十条垃圾评论,听说有大站一天上万条垃圾的……
 
我的feedback页面经常成为重灾区,有段时间索性关闭了评论(虽然确实没人评论),后来换了插件:Akismet,这个插件的拦截效果很好,但数据库仍会写入很多无用信息,而且很消耗 CPU 资源,也想过使用验证码过滤垃圾,但是不太利于用户体验(虽然没有用户评论)。
 
后来突发奇想,绝大多数的垃圾评论都是英文的,那直接拒绝没中文的评论不就好了,省了数据库还不占CPU,搜一搜还真有这种插件:Some Chinese Please,它可以直接拒绝内容中不带有中文字的comment和trackback(pingback)。
 
但强迫症表示加载插件也是占用资源的,不如直接集成了吧,于是扒出了代码并进行了简化。
 
将下面的代码添加到主题的 functions.php 文件:

  1. /* 评论必须含中文*/    
  2. function refused_spam_comments( $comment_data ) {    
  3. $pattern = ‘/[一-龥]/u’;    
  4. if(!preg_match($pattern,$comment_data[‘comment_content’])) {    
  5. wp_die(‘为了过滤垃圾信息,您的评论内容必须包含中文!<br />In order to refused spam,Your comments must include Chinese!’);    
  6. }    
  7. return$comment_data );    
  8. }    
  9. add_filter(‘preprocess_comment’,’refused_spam_comments’);  

这样修改后效果与使用 Some Chinese Please 插件相同。
此时如果遇到全英文的评论,会提示以下错误。
忽略我蹩脚的英文翻译……



评论列表

  1. 吴言说道:

    hhhhh太酷了

    1. 熊猫说道:

      哈哈

发表评论

电子邮件地址不会被公开。 必填项已用*标注