阻止WordPress垃圾评论 – 免插件教程
互联网每天都产生很多的垃圾信息、不良广告信息,WordPress网站如果开启了评论功能,也难免被这些不良信息困…
互联网每天都产生很多的垃圾信息、不良广告信息,WordPress网站如果开启了评论功能,也难免被这些不良信息困扰。如果是维护管理频率较高的网站,强烈建议在后台开启“评论必须经人工批准”。
不过这样一来会增加管理者的工作,本文将介绍如何有效自动过滤大多数垃圾评论的方法。
垃圾评论的特征
一般来说垃圾评论都是以超级链接或宣传某种不良信息为目的,大多有以下特点:
- 评论内容含有
<a>
链接 - 通过程序自动发送
- 部分境外垃圾信息不包含中文汉字
垃圾评论示例:
如何阻止垃圾评论
1、使用Akismet Anti-Spam插件自动防护。这种做法是可行而且有效的,但缺点就是其免费密钥仅适用于个人非商业站点,而且API调用次数受到限制。最大的弊端是会影响网站性能。
2、使用插件或代码为评论增加验证功能,例如验证码或仅注册用户评论等。这种方式也是有效的,不过不太适合采用了静态缓存或CDN缓存的网站,虽然可以通过ajax的方式来解决缓存的问题,但ajax会产生额外系统资源损耗,访问量大的网站特别明显,不符合站长帮一贯追求极致优化的作风。(注:ajax会与服务器交换数据。)
3、推荐阻止垃圾评论的方式:纯代码免插件阻止垃圾评论
在当前主题的functions.php文件尾部增加以下代码:
/* 阻止垃圾评论代码Start */ /* 本文出自:https://www.zhanzhangb.com/1417.html */ /* 阻止全英文评论 */ function refused_english_spam_comments( $comment_data ) { $pattern = '/[一-龥]/u'; $jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u'; if(!preg_match($pattern,$comment_data['comment_content'])) { wp_die('<p>评论中必须含有中文! - 站长帮</p>'); } return( $comment_data ); } add_filter('preprocess_comment','refused_english_spam_comments'); /* 阻止含 A 链接评论 */ function refused_a_spam_comments( $incoming_comment ) { if(strstr($incoming_comment['comment_content'], "<a")){ wp_die( "<p>评论中不能包含超级链接,请直接填写 URL 地址! - 站长帮</p>" ); } return( $incoming_comment ); } add_filter('preprocess_comment', 'refused_a_spam_comments'); /* 阻止垃圾评论代码End */
如果以上代码阻止垃圾评论,但不出现提示内容(部分主题的兼容性问题),请尝试以下代码:
/* 阻止垃圾评论代码Start */ /* 本文出自:https://www.zhanzhangb.com/1417.html */ function spam_comments_error_prompt($ErrMsg) { header('HTTP/1.1 405 Method Not Allowed'); echo $ErrMsg; exit; } /* 阻止全英文评论 */ function refused_english_spam_comments( $comment_data ) { $pattern = '/[一-龥]/u'; $jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u'; if(!preg_match($pattern,$comment_data['comment_content'])) { spam_comments_error_prompt('评论中必须含有中文! - 站长帮'); } return( $comment_data ); } add_filter('preprocess_comment','refused_english_spam_comments'); /* 阻止含 A 链接评论 */ function refused_a_spam_comments( $incoming_comment ) { if(strstr($incoming_comment['comment_content'], "<a")){ spam_comments_error_prompt( "评论中不能包含超级链接,请直接填写 URL 地址! - 站长帮" ); } return( $incoming_comment ); } add_filter('preprocess_comment', 'refused_a_spam_comments'); /* 阻止垃圾评论代码End */
以上代码将阻止内容中包含任何超级链接或内容全英文的评论,并给出适当的提示,这和Akismet Anti-Spam插件不同的是,被阻止的评论是无法发送的(返回405错误提示),这对于WordPress数据库来说也算是一种环保吧。
欢迎持续关注站长帮,我们共同探讨更多WordPress优化技巧,联系我们。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
评论功能已经关闭!