现在的位置: 首页 > WordPress教程 > 正文

WordPress禁止垃圾评论写入数据库多功能高效代码(无需后台手工审核)

2014年10月18日 WordPress教程 ⁄ 共 1544字 评论数 1 ⁄ 阅读 2,022 次

WordPress垃圾评论一直是个很头痛的问题,虽然插件可以减少垃圾评论数量,但还是会有很多漏网之鱼以及一些需要在后台手工审核处理的评论。去年搞了段代码可以禁止评论内容中出现特定字符或内容不包含中文的评论提交(详见“WordPress防垃圾评论最佳方法【高效】【非插件】”),然而前段时间换个了配置差的虚拟主机,就发现在评论提交时速度非常慢,而且这段代码的功能也仅限于对评论内容做处理,不够强大。于是,就想着自己搞段代码来实现可以从用户名、URL、内容和IP四方面禁止垃圾评论提交。

为了全面防止垃圾评论的提交,本人提供两种手段。当然,任何一种手段都是独立的,读者可根据自己需要采用。

WordPress防垃圾评论最“高效”代码:

如果主题下存在文件comments-ajax.php,则搜索“wp_new_comment”,将本行代码替换为以下代码:

该代码主要用于阻止通过前台提交的垃圾评论,它从表单内直接提取$_POST的字段,在评论写入数据库的早期阶段生效。而且代码使用非贪婪模式,将效率高的代码采用最短路径,整体来讲速度会快一些。

代码使用时,想通过昵称禁止垃圾评论则将需要禁止的字符添加到$pattern_comment_author的内容中,如本代码将昵称中含有“机”、“夜总会”、“www”和“cheap”的评论直接拒绝,如果想新增禁止词汇则直接最单引号里加就行了,新增的禁止词之前要用英文逗号跟之前的词隔开!

同理,$pattern_comment_url中内容是评论网址中出现的主域名部分,新增禁止域名方法与之前一样。$pattern_comment_content中内容是禁止评论内容中出现特定字符的评论,新增禁止字符方法与之前一样。

注意!不要过多的添加禁止字符,否则会造成评论提交时用户等待时间延长!

WordPress反垃圾评论最“多功能”代码:

如果采用这种方法则可不必采用第一种,否则重复检测可能会造成效率低下!另外,第一种方法虽然速度快,然而,针对使用技术手段不通过前台提交的垃圾评论可能无法起到作用。而本方法则不管前台提交还是后台提交,都能起到作用,且可以通过昵称、域名甚至IP地址来反垃圾评论。具体方法如下:

找到主题下functions.php文件,到文件结尾处,在?>之前添加如下代码:

通过昵称、域名来过滤评论主要针对的是国内的垃圾评论,因为部分评论可能从内容上是无法判断的。评论中禁止“http:”、“www”、“ktv”对国内外垃圾留言都可生效,而变量$pattern_hanzi主要用于禁止全评论内容中不含中文的评论。

在本段代码中,效率最低的代码作用是禁止全评论内容中不含中文的评论。主要是部分全英评论其内容中不含有过滤词,要么就出现一个在昵称或域名中加一个,要么就容忍这个低效代码。毕竟,垃圾评论中全英文评论可能占到80%以上,一个个加禁止域名或昵称可能有些繁琐。

代码使用时,把具体想禁止的字符加到相应的单引号内,且与前一个字符之间用英文逗号隔开即可。$pattern_comment_author表示昵称、$pattern_comment_url表示网址、$pattern_comment_content表示评论内容、$pattern_comment_ip表示评论者IP。

最后,若你所使用的主题采用AJAX方式处理评论,则可直接改WordPress系统文件,将根目录下的wp-comments-post.php重命名一下,比如重命名为feiqi-wp-commnents-post.php,这也可以在一定程序上减少国外垃圾评论。

» 声明:本站文章源于个人经验总结或书籍、互联网转载,内容仅用于个人学习,请勿转载,否则后果自负!

目前有 1 条留言 其中:访客:1 条, 博主:0 条

  1. 米粒阁 : 2016年02月13日09:42:11  -49楼 @回复 回复

    很好的学习知识 谢谢

给我留言

留言无头像?