虽然akismet识别垃圾评论的准确率很高, 但对于我来说, 每天看到垃圾评论队列里有那么多垃圾评论, 还是很不爽. 眼不见为净. 于是自己写了个Wordpress插件, 直接丢弃垃圾评论.
WordPress只有comment_post, 但没有pre_comment_post事件, 在评论被保存之前触发. 我只好自己加上了. 所以修改了wp-comments-post.php文件.
// 就是这一行, ideawu.net
do_action('pre_comment_post', $commentdata);
$comment_id = wp_new_comment( $commentdata );
$comment = get_comment($comment_id);
插件很简单, 就是利用comment_post事件加入一个隐藏字段, 该字段的值通过客户端JavaScript代码来设置. 提交后和服务器端的值比较, 如果不相同, 说明用户未开启JavaScript, 被认为是垃圾评论. 评论机器人一般不会支持JavaScript.
有需要的朋友给我留言, 我发给你. 欢迎有心的朋友按第一条评论的格式回复进行测试!
用户: 已登录
JavaScript: 开启 Reply
用户: 未登录
JavaScript: 开启. Reply
用户: 已登录
JavaScript: 开启. Reply
用户: 未登录
JavaScript: 开启. Reply
用户: 未登录
JavaScript: 开启. Reply
用户: 已登录
JavaScript: 关闭. Reply
用户: 已登录
JavaScript: 开启. Reply