彻底关闭 WordPress Trackback,防止垃圾评论

Trackback 是 Web 2.0 发展初期的产物,最初是方便展示博客文章之间的引用情况。

比如你有一篇文章写得很不错,很多人在介绍对应的话题一样,就会引用你这篇文章,这些引用你文章的博客文章,会通过 Trackback 协议通知这篇文章。

你博客文章收到 Trackback 之后,就会在文章的评论区展示这些引用,这样就可以向读者展示你这篇文章收到了很多引用,是非常好的文章。

所以 Trackback 就成为了博客之间一种通讯的机制和协议,可以看到别人是如何看待自己的文章,看到谁链接了你的博客。WordPress 还加强了 Trackback 功能,还引入了 Pingback 机制,用户不必输入 Trackback 地址就能实现 Trackback 通知,使用上更加方便。

Trackback 被 Spammer 滥用

Trackback 协议看起来非常美好,但是互联网最多就是 Spammer,滥发垃圾链接的人,他们善于找漏洞,Trackbacks 机制,可以在对方博客留下自己链接这一机制,被他们发现这是一个发垃圾链接的绝佳方法,比如下图:
Trackback 被 Spammer 滥用

所以 Trackbacks 实际用途并没有按照当初设计那样用于博客间交流,反而被 Spammer 滥用,并且各种防垃圾评论插件比如 Akismet 也经常漏掉,可以说防不胜防,Trackback 真的也让人不慎其烦,建议彻底关闭 WordPress 的 Trackback。

如何彻底关闭 Trackback

关闭 Trackbacks 首先需要到 WordPress 后台,「设置」>「讨论」,把「允许其他博客发送链接通知(Pingback和Trackback)到新文章」这一项取消。

但是 WordPress 的每篇文章是否接受 Trackbacks 是单独设置的,所以如果需要把以前的文章的 Trackbacks 也关闭,你需要数据库中执行下面这条 SQL。

UPDATE `wp_posts` SET ping_status="closed";

当然最好的也可以在 WordPress 当前主题的 functions.php 加入下面代码,使得 Trackback 功能彻底失效。

//彻底关闭 pingback
add_filter('xmlrpc_methods',function($methods){
	$methods['pingback.ping'] = '__return_false';
	$methods['pingback.extensions.getPingbacks'] = '__return_false';
	return $methods;
});

//禁用 pingbacks, enclosures, trackbacks
remove_action( 'do_pings', 'do_all_pings', 10 );

//去掉 _encloseme 和 do_ping 操作。
remove_action( 'publish_post','_publish_post_hook',5 );

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注