自从卸载掉多说评论之后,我的博客的垃圾评论简直是与日俱增:

我尝试了各种各样的反垃圾插件,结果都不太让人满意,有的验证码根本看不出来,有的在移动端没法用,有的有各种兼容问题,我的博客虽然流量不大,但评论的同学还是有的,然而接近一个月,我都没有收到过评论,后来有同学在微博@我,我才知道原来是评论反垃圾插件的锅。又继续尝试了几个插件以后,均没有找到满意的,我一怒之下决定自己做一个

我的思路很简单,方法也很糙,就是在评论的表单里面多加一个字段,并且在接受的时候验证这个字段。如果你也想做一个这样的东西,你需要改两个文件,第一个文件是直接在wordpress后台就能改的:comments.php,打开它的方法为:左侧边栏—外观—编辑,然后在右边的文件列表里面找到comments.php,它就是我们需要改的第一个文件

在这个文件里面仔细找到提交评论的表单区域(用红框框住的):

我们可以看到里面有被<p>标签包含的诸如称呼,邮箱,网址字段,我们要做的是,在下面加上一个input字段,你可以直接复制上面任何一个的,然后改动其中的一些小地方就OK了:

你可以参考我的这段代码,但一般情况下不能照抄(除非你和我用一样的主题),确保这个input字段的name=dk(这个dk你也可以改成其它的,但后面会用到),然后名字是「验证」,在placeholder这个属性里面写上「请输入DK」(这个DK你也可以改成其它的,但后面还是会用到),其他部分基本没什么要改的。

改完之后你可以去刷新一篇文章,看验证那个框能否正常显示,如果能正常显示的话就说明没有改出什么毛病,如果评论框不见了,那仔细检查你的代码,注意看有没有不小心用成了中文引号,代码里面应该是”和’,而非“和’,不容易看出来,但错了代码就挂了。

下面我们要改第二个文件,这个文件没法在后台改了,要通过ftp或其他远程管理文件的方式去改,我们要改的这个文件位于WordPress的根目录,它叫做:wp-comments-post.php,在这个文件的第一个if结束后,加入这段代码:

if($_POST[‘dk’]!=’DK’){
echo “<script>alert(‘验证码错误’)</script>”;
echo “<script>window.history.go(-1)</script>”;
exit;
}

就像这样:

注意,代码里面的第一个dk与你之前写在comments.php里的dk相对应,第二个大写的DK与你在comments.php里面的第二个DK相对应,你可以随意更换,但要保持一致,同时要在comments.php里面提示用户输入第二个DK

保存一下,就OK了。

会写代码的人会说,这太简单了,是的,这个的确很傻瓜,但是效果还不错,原因在于现在的Wordpress垃圾评论机器人,基本只会简单的模式,或者应对一些比较著名的反爬虫插件,对于这种自制的,虽然简单,但只要它不定制,你就可以很好的防御住,同时基本上没有任何效率损耗,对于个人博主来说,非常有性价比。


我的微信公众号~