WordPress 的垃圾评论可能对于所有的用户来说都是个问题,系统的普及性导致了垃圾评论工具也愿意去针对 wp 进行一系列的开发。对于评论发送者来说在目标足够多的情况下,成本是足够低廉的。
当然,使用 wp 系统的应该也都安装了一系列的插件来阻挡垃圾评论,例如akismet,能够过滤识别大多数的垃圾评论,一年的统计数据已经有 1.5 万多条数据:
这还是期间改过一些平路提交的限制代码,限制了评论长度。有段时间发布的垃圾评论,一条评论包含了几百个网站链接,每天有数十条。后来通过代码 hook 限制了评论长度之后,这些垃圾评论少了很多。
现在又呈现出另外一种趋势,那就是评论长度短了,但是每条评论都带评论地址。所以在这个基础之上,继续完善了一下评论规则,如果是非中文评论,带链接 url,直接禁止此类评论。之所以保留了英文评论是因为偶尔有那么几个所谓的外国人会发一些英文评论,当时也有可能是假洋鬼子。这个不好说。
不过让人比较方案的是,有一部分分享内容设置了回复可见,于是就 tm 有些傻吊发些无意义的英文字符,看到这种垃圾评论一律直接删除,没有意外。连基本的尊重都没有,都 tm 白嫖 嫖习惯了这是。
调整之后的代码,添加到 functions.php 中:
/* * WordPress控制文章评论最少字数 */ function custom_comment_length( $commentdata ) { $max_length = 800; // 设置最大字数限制 if ( mb_strlen( $commentdata['comment_content'] ) > $max_length ) { wp_die( '额,你评论的内容太多啦,最多可以输入800个字,不要再评论区写论文啊!' ,'宝贝,出错了哦 - obaby@mars', array( 'back_link'=>true ) ); } if ( ! is_admin() ) { $comment_content = $commentdata['comment_content']; if ( preg_match( '/[\x{4e00}-\x{9fa5}]/u', $comment_content ) === 0) { if (strpos($commentdata['comment_author_url'],'http')!==false || strpos($comment_content,'http')!==false){ wp_die( '不要乱发哦,让姐姐我不开心就不好了嘛!','姐姐我不开心啦! - obaby@mars', array( 'back_link'=>true ) ); } } } return $commentdata; } add_filter( 'preprocess_comment', 'custom_comment_length' );
当然,针对不能出现的关键字可以直接在 wp 的后台讨论中设置:
上面的关键字都是专门针对前端时间跑到别人博客到处骂人的那个傻吊设置的。
实际屏蔽效果:
希望没有误伤,嘻嘻