纯代码实现彻底屏蔽WordPress站点垃圾评论

投稿  龙砚庭博客 2016-10-13 阅读 180 次 评论 31 条

相信很多人都意识到:独立博客经营到一段时间,pv等流量是上去了,但接踵而来的是无休止的垃圾评论。垃圾评论也就算了,居然还不访问我们的网站直接用脚本刷,连个pv值都不贡献下,太抠啦,不走心,差评。辣么,分享个教程呗,只要入了我们后台评论黑名单的关键词、email、url、ip,统统将他们一网拦截在前端门外。

纯代码实现彻底屏蔽WordPress站点垃圾评论

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

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站点垃圾评论 评论黑名单

如此,我们至少可以舒心很多啦,因为很多垃圾评论的人大多不走心,如果他们走心了,花点心思来诚心评论,不正说明了我们的代码起作用啦!

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

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

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

  1. function refused_spam_comments($comment_data) {
  2.     $pattern = '/[一-龥]/u';
  3.     $jpattern = '/[ぁ-ん]+|[ァ-ヴ]+/u';
  4.     if (!preg_match($pattern$comment_data['comment_content'])) {
  5.         err(__('来一波汉字吧,苦逼的庭主只认识汉字!You should type some Chinese word!'));
  6.     }
  7.     if (preg_match($jpattern$comment_data['comment_content'])) {
  8.         err(__('原谅庭主吧,这货只听得懂岛国神片的一两句雅蠛蝶 Japanese Get out!日本语出て行け! You should type some Chinese word!'));
  9.     }
  10.     return ($comment_data);
  11. }
  12.     add_filter('preprocess_comment', 'refused_spam_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要多折腾才会好玩,这样能够保持我们的激情!


测试结果:

经过boke112测试,结合禁止非法词汇评论提交到数据库的代码过滤外文(如纯英文或日文)评论的代码,本站已基本上没有了垃圾评论,平时每天的评论回收站都能收到很多垃圾评论,现在都为0了。

纯代码实现彻底屏蔽WordPress站点垃圾评论 垃圾回收站

所以说,只需将本文的代码添加到WordPress站点的functions.php文件中,基本上能够屏蔽绝大部分垃圾评论,这样我们就可以放心停用那些评论验证码之类的插件了。当然,我们还需要持续不断地给评论黑名单中添加新内容,这样防御力度才会更加强悍。

历史上的今天:

本文地址:http://boke112.com/3583.html
关注我们:请关注一下我们的微信公众号:扫描二维码,公众号:aiboke112
温馨提示:文章内容仅代表作者个人观点,不代表boke112导航赞同其观点和对其真实性负责!
版权声明:本文为投稿文章,感谢 龙砚庭博客 的投稿,版权归原作者所有,欢迎分享本文,转载请保留出处!
WordPress免费响应式主题:Nana
CPA教学与引流技巧

发表评论

呲牙憨笑坏笑偷笑色微笑抓狂睡觉酷流汗鼓掌大哭可怜疑问晕惊讶得意尴尬发怒奋斗衰骷髅啤酒吃饭礼物强弱握手OKNO勾引拳头差劲爱你

表情

  1. 码字侠
    码字侠 【农民】 @回复

    个人觉得,有出处的代码还是保留下出处比较好,也是对原作者的一种尊重:http://www.uedsc.com/wordpress-fuck-spam.html
    把函数名称什么的简单的改改,也许原理都没有彻底摸透,就在文章底部加上【本文由xxx原创,转载xxx】。。。
    不否认,整理当然也算是一种原创,还是那句话,如果能够找到出处的代码,还是标识一下原创出处比较好。
    最后,弱弱的吐槽一下,这代码还是2年前的吧,翻出来晒晒也不错。方便了一些搜索都懒得动手的站长朋友。

    • boke112导航
      boke112导航【站长】 @回复

      @码字侠 能够找到代码出处的一般都会保留出处,当然对于投稿文章的代码是原创还是怎么来的就没办法去核实和搜寻了

      • 码字侠
        码字侠 【农民】 @回复

        @boke112导航 恩,我是说给投稿作者听的。

  2. 南通SEO
    南通SEO 【镇长】 @回复

    橘子书 –根据你的提示已经完美解决了!感谢!

  3. Javen
    Javen 【队长】 @回复

    滑动提交评论就挺好的。

    • boke112导航
      boke112导航【站长】 @回复

      @Javen 是的,滑动提交评论很强大,就是在移动端感觉不太好用,我以前就用过这个,后来才变回原生评论的

  4. 南通SEO
    南通SEO 【镇长】 @回复

    两个问题,最后一段评论字数限制的,添加以后少于5个字,网页提示错误会出现框架结构会错位。
    第二个问题是过滤外文的代码添加以后网站打不开!
    不晓得什么原因,还没排查

    • 橘子书
      橘子书 【镇长】 @回复

      @南通SEO 因为你的主题自定义了报错的样式,将里面的wp_die改为主题自定义的函数。
      最简单的测试方法,试试本文其他的代码,不会移位的话,就说明了你的主题定义了err这个函数。将wp_die改为err

    • 橘子书
      橘子书 【镇长】 @回复

      @南通SEO 至于过滤外文的代码加入后网站打不开,应该是你的主题函数文件里面写了一个相同的函数:refused_spam_comments
      目测你的主题本身就集合了过滤外文的功能。

  5. 唯历史
    唯历史 【总理】 @回复

    太多的垃圾了,我用多说,貌似这个没用吧

  6. 南通SEO
    南通SEO 【镇长】 @回复

    我也先去测试一下吧,看疗效

  7. 捌零男人
    捌零男人 【镇长】 @回复

    多说,省事,且不担心评论内容影响网站

    • boke112导航
      boke112导航【站长】 @回复

      @捌零男人 多说还是很不错的,就是偶尔抽风老是加载不成功,不知道现在改善没有

  8. 西狂
    西狂 【镇长】 @回复

    Shield_fuckspam,这个函数名霸气! [强]

  9. 网页游戏赚钱wzmao.com
    网页游戏赚钱wzmao.com 【村长】 @回复

    试一下有没有用,看下这个评论

  10. 真我风采
    真我风采 【县长】 @回复

    纯手工打造。

  11. 淘宝内部优惠券
    淘宝内部优惠券 【县长】 @回复

    wp程序是经常会有那种刷辣鸡评论的

  12. 金榜台博客
    金榜台博客 【县长】 @回复

    那我的评论算垃圾评论吗?呵呵

  13. 闲鱼
    闲鱼 【村长】 @回复

    [偷笑] 杜绝垃圾评论从现在做起

  14. 橘子书
    橘子书 【镇长】 @回复

    最少字数跟最多字数加上去,的确效果更佳。

    • boke112导航
      boke112导航【站长】 @回复

      @橘子书 是的,这样可以防止有些就发一个表情,或一两个字的评论

  15. 龙笑天
    龙笑天 【县长】 @回复

    评论要走心~~ [偷笑]

  16. Koolight
    Koolight 【省长】 @回复

    今天双管齐下,都是关于留言评论的。

    • boke112导航
      boke112导航【站长】 @回复

      @Koolight [呲牙] 刚好两篇都差不多同一个类型,所以就直接同时发了

  17. 老叶养生博客
    老叶养生博客 【镇长】 @回复

    实用!

  18. 自由人理财
    自由人理财 【村长】 @回复

    我是用Akismet插件的,感觉还行。