1. <div id="11111"></div>

    1. <div id="11111"></div>

      1. <div id="11111"></div>

        WordPress防范垃圾评论的简单方法[无插件]

        日期: 标签:WordPress教程 102 条留言
        如需帮忙改代码,或者WordPress二次开发、PHP网站建设等需求,可联系我购买付费服务:  点此联系我
        文章目录

        "Some Chinese Please"是为用中文写作的wordpress blogger准备的拦截spam的plugin。
        在WordPress blog系统下,有90%+的Spam是由英文字母和拉丁字母组成。
        通常情况下,用中文写作的blog,其留言、trackback和pingback应该也是包含中文字的。 那么,只要拦截下不包含中文字的留言、trackback和pingback,那么blog接收到spam的概率将大大降低,接近于0。
        SCP在留言、trackback和pingback发送到 blog,保存到数据库前,将检查他们是否包含有中文字。 如有,将通过检查保存到数据库中;如没有,将拦截,并返回出错的字句,而且将不保存到数据库中。

        莫非标题党?不是说[无插件]的吗?怎么一上来就冒出这么个插件介绍?还这么长!先别着急,下面听我细细道来。

        之前一直在用这款插件来防范垃圾评论,自从用了这款插件后,就几乎没有什么垃圾评论再敢来骚扰我了,Akismet也成了摆设。垃圾评论不来光顾了,以至于前些天撤下了所有的垃圾评论过滤插件。但是今天又冒出来个臭虫,现在写博客的还真是命苦啊,还得防着垃圾评论!是不是该重新启用垃圾评论过滤插件呢?插件自有它的局限性,如通常所说的影响速度,之前我对此并不赞同,但是我前些天也写了一款插件,也大致了解了插件的执行过程,其实启动插件后,至少在后台每个页面都会将插件的代码包含进来,至于代码有没有执行我就不得而知了,怎么说也应该会对后台有点影响的。

        一、好方法:修改主题

        废话少说,写本文的主要目的还是教大家如何抛弃这款Some Chinese Please插件,不过方法还是学它的,主要功能还是Some Chinese Please的功能,只需加几行代码即可。下面是新的实现方法,只需修改你当前使用的主题目录下的functions.php就可以了,而且不会受到的WordPress升级的影响,实现原理与Some Chinese Please插件一样,只是少了一个后台而已。具体修改:打开当前使用的主题目录下的functions.php,在将第一个 <?php 替换成:

        <?php
        function scp_comment_post( $incoming_comment ) {
        	$pattern = '/[一-龥]/u';
        
        	// 禁止全英文评论
        	if(!preg_match($pattern, $incoming_comment['comment_content'])) {
        		wp_die( "You should type some Chinese word (like "你好") in your comment to pass the spam-check, thanks for your patience! 您的评论中必须包含汉字!" );
        	}
        	return( $incoming_comment );
        }
        add_filter('preprocess_comment', 'scp_comment_post');

        最后以 UTF-8 编码将functions.php另存为,而不是直接点保存,覆盖原来的functions.php文件(否则你的博客评论会出错),上传到你的博客空间,一切OK!

        二、笨方法:修改源文件

        以下方法是通过修改WordPress源文件来实现的,所以每次WordPress升级后,wp-comments-post.php文件都会被覆盖,这就需要你重新修改这个文件,而且不同版本的代码可能会不太一样,对于频繁升级的WordPress来说比较不便的。言归正传,用文本编辑器打开WordPress安装目录下的wp-comments-post.php,查找

        // If the user is logged in

        好,将其替换成:

        $pattern = '/[一-龥]/u';
        
        if(!preg_match($pattern, $comment_content)) {
        	wp_die( "You should type some Chinese word (like "你好") in your comment to pass the spam-check, thanks for your patience! 您的评论中必须包含汉字!" );
        }
        
        // If the user is logged in

        以上代码实现的基本原理是,判断评论内容是否包含汉字,如果一个汉字都没有,则给出错误提示,评论无法提交,这样垃圾评论也没有存储到数据库中,达到了屏蔽英文垃圾评论的目的。修改后的代码,应该差不多像这样子:

        垃圾评论过滤代码

        最后以 UTF-8 编码将wp-comments-post.php另存为,覆盖原文件(否则你的博客评论会出错),上传到你的博客空间,一切OK!刷新你的博客,试试在文章评论中输入一串英文字母,看看有什么效果!

        如果你死活都不知道怎么改,或者改了不见什么效果,可以下载我修改好的wp-comments-post.php,点此下载。下载完成后,覆盖你原来的wp-comments-post.php即可。注意:该文件对应WordPress 2.9.2版本;覆盖之前先复制好一份你原来的wp-comments-post.php

        真舒服!现在就可以停掉Akismet和Some Chinese Please这两款插件了。

        使用说明

        • 如果你的WordPress升级了的话,下次你还得照以上方法做一下修改,如果嫌麻烦你还是用以下第一个好方法或插件吧!

        本站已在服务器端开启垃圾评论拦截系统,故在此关闭了全英文评论的拦截!如需试验,请自行修改后在你的博客进行测试。

        -- 完 --

        本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
        原文出处:露兜博客 http://www.szeverich.net.cn/wordpress-simple-way-to-anti-spam.html
        露兜
        kaapass@outlook.com  QQ 825533758

        业余编程爱好者,主业是淘宝店主,卖些工艺品,感兴趣可以到我的淘宝店看看(旺旺不提供技术咨询):西西弗sisyphe

        102 条留言

        点此留言
        1 2 3 87
        1. nicheng

          quan ying wen pinglun haishi keyi fa de ma

        2. 小二苘

          受教,我拿去试试

        3. 滕绍武博客

          这个办法是不是只能屏蔽英文的,中文的不行

        4. 赛虎

          这功能很不错,我已经用上了,谢谢分享。
          给你做个友链。o(╯□╰)o

        5. 赛虎

          您的评论需要经过管理员审核通过后才会生效.

          这功能很不错,我已经用上了,谢谢分享。
          给你做个友链。o(╯□╰)o

        1 2 3

        发表留言

        可以挣钱的游戏 357| 401| 723| 653| 780| 493| 719| 840| 423| 327| 265| 327| 358| 632| 965| 141| 389| 499| 872| 352| 476| 2| 199| 481| 317| 763| 749| 723| 579| 34| 620| 352| 715| 40| 943| 242|