WordPress过滤垃圾评论的几种有效方法

2023年9月23日 / 网站源码 / 没有评论 / 5,623次

博客经常收到很多垃圾评论,当然也有一些中文的广告评论,大部分内容为“感谢分享”等这些垃圾的内容,且这些会被Akismet不放入垃圾评论中,我每次看到都会直接删除,还好不是很多和经常有。但是英文的垃圾评论就很多了。无法,我只能另求办法。以下是三种方法的优劣势比较。

一、使用Akismet插件(https://wordpress.org/plugins/akismet/),后台申请一个免费的key,可以拦截99%的垃圾评论,但是这个插件还是会将垃圾评论写入数据库的,一会几千条甚至上万条垃圾评论,虽说可以设置15天后自动删除,但是看着也别扭,于是加上第二种方法。

二、更改wp-comments-post.php名称

这种方法是先将wp-comments-post.php改为随便的名字,然后在你主题文件的comments.php中将wp-comments-post.php改为你刚才改过的名字

但是现在的spam机器人太强了,这种方法基本上没有任何作用,垃圾评论还是会进入到后台的垃圾评论里,于是采取第三种方法,过滤掉纯英语的垃圾评论,这种评论占了垃圾评论的很大一部分

三、过滤纯英文垃圾评论

在你主题的functions.php中添加以下代码

  1.  function refused_spam_comments( $comment_data ) {
  2.   $pattern = '/[一-龥]/u';
  3.   if(!preg_match($pattern,$comment_data['comment_content'])) {
  4.   wp_die('评论必须含中文!');
  5. }
  6.   return$comment_data );
  7. }
  8. add_filter('preprocess_comment','refused_spam_comments');

其中[一-龥]这个正则表达式代表所有中文,这时纯英文的垃圾评论算是过滤掉了,但是还有另外一种垃圾评论,日文的……

日文的采用同样的方法,请几个常出现的日文假名写入到正则表达式中ッ、の、ン、優、業、グ、貿

  1. function fuckjp_comment_post( $incoming_comment ) {
  2.   $http = '/[<|=|.|友|夜|KTV|ッ|の|ン|優|業|グ|貿|]/u';
  3.   if(preg_match($http$incoming_comment['comment_content'])) {
  4.   wp_die( "日本广告离开!" );
  5. }
  6.   return$incoming_comment );
  7. }
  8. add_filter('preprocess_comment', 'fuckjp_comment_post');

目前龙哥采用第一种和第三种结合的方式。