wordpress纯代码蜜罐拦截垃圾评论

要说最能屏蔽垃圾评论的,就要属评论必须注册+注册必须验证邮箱了,尽管会出现大量僵尸用户注册(这样的用户我有六七百个),但都是在注册后陷入沉寂。但我使用这种模式114514年后,却只收到了几条评论,过于冷清,属实不可取。后来我就允许游客评论,但随之而来的是大量的垃圾评论。他们的特点是全都是非中文,出现在最新的文章且全部填了站点URL。

而我的站点是在评论中去除了站点URL的链接(就是昵称的链接)并且把站点URL输入框用CSS隐藏了的。正常评论压根填不了那个,填了也没用。但是那些垃圾评论仍然带有站点URL,因此我们可以利用这个进行屏蔽。

顺便贴一下相关关闭站点URL链接的代码。

//移除评论人名字的链接,加进主题function.php中,不移除也可以使用屏蔽
function disable_comment_author_links($author_link){
return strip_tags($author_link); 
}
add_filter('get_comment_author_link', 'disable_comment_author_links');
/*加进主题style.css或自定义全局css中,隐藏输入框*/
.comment-form-url{display:none;visibility:hidden}

说实话这玩意留着也没啥用,不如拿来当蜜罐阻挡垃圾评论,也省得去手动审核。

因为那些评论都是机器人扫描站点,找到wordrepss站就直接把评论post到wp-comments-post.php,所以他们也不会因为主题怎么变更而自我去除站点URL,这就使得这种方法效果显著,屡试不爽。

上代码

//禁止填了站点url的评论,一样加进主题function.php
function wp_comment_post( $incoming_comment ) {
if($incoming_comment['user_ID']==0&&$incoming_comment['comment_author_url']!=""){
wp_die( '<p>⚠垃圾评论是不允许的哦,垃圾评论</p><p><a href="javascript:history.back()">« 返回</a></p>');
}
return $incoming_comment;
}
add_filter('preprocess_comment', 'wp_comment_post');

当然,使用这些代码屏蔽垃圾评论的前提是必须隐藏站点URL输入框,不然会误伤无数。

其中的$incoming_comment['user_ID']==0表示只对非注册用户起作用,你也可以根据这个数组的其他元素设置自己的判断,数组结构我会贴在下方。

有的主题带有自己的警告函数,比如知更鸟是err()wp_die()函数是直接在新页面显示错误信息,你也可以通过cookie传递新参数并用js跳回使在原页面用HTML+javascript显示警告。但毕竟这只是给那群bot看(我愿称之为记录)的,没必要这么整起来。不想使用wp_die()也可以上自己的代码,然后die()exit

$incoming_comment数组的(json_encode后)示例:

①已注册用户

["comment_post_ID":"4635","comment_author":"Mmx","comment_author_email":"mmx@mmxblog.com","comment_author_url":"https:\/\/mmxblog.com","comment_content":"评论内容","comment_type":"","comment_parent":"0","user_ID":1,"user_id":1]

②正常游客

["comment_post_ID":"4635","comment_author":"Mmx","comment_author_email":"guest@mmxblog.com","comment_author_url":"","comment_content":"评论内容","comment_type":"","comment_parent":"0","user_ID":0,"user_id":0]

一段时间后,实测还是会有微量无名中毒的评论。推荐改主题的时候加个value,然后把value加进判断里,更绝。

关于“wordpress纯代码蜜罐拦截垃圾评论”我的2个想法

发表评论

电子邮件地址不会被公开且将被用于接收回复及审核信息,评论区非实时刷新。 必填项已用*标注