彻底关闭WordPress博客的Pingback与Trackback

WordPress有一个十分强大的功能,利用Pingback与Trackback,可以从其它博客获取信息

但是,这个功能实用性不高,而且对服务器资源占用极大

更甚的是,有人利用Pingback与Trackback,发垃圾评论、发广告,简直是难以阻止

使用各类插件效果也不理想

所以彻底屏蔽掉这个功能,迫在眉睫

后台停用

在Wordpress后台的设置-讨论中,有关于Pingback与Trackback的设置

我建议关闭掉“尝试通知文章中链接的博客”和“接受从其它博客的链接通知”两项

但是,在后台停用掉这个功能后,只会对停用之后发布的文章有效

意思就是,你在这之前发布的文章,仍然会接受Pingback与Trackback!

函数劫持

若我们不想让之前发布的文章接受通讯(若你的是新博客,则不存在此问题),则有两种解决方案:

1.修改之前文章的数据库,关闭pingback等功能

2.直接屏蔽掉博客的pingback等功能

经过对修改数据库的尝试,我发现根本行不通,Wordpress博客会自动覆盖你修改的数据

所以,我们需要对Pingback与Trackback所要用到的函数进行劫持,彻底屏蔽掉Wordpress博客的这个功能

在你所用主题的function.php末尾加上如下代码:

add_filter( 'wp_headers', 'pmg_pk_filter_headers', 10, 1 );
function pmg_pk_filter_headers( $headers )
{
if( <a href="http://www.php.net/isset">isset</a>( $headers['X-Pingback'] ) )
{
<a href="http://www.php.net/unset">unset</a>( $headers['X-Pingback'] );
}
return $headers;
}
 
add_filter( 'rewrite_rules_array', 'pmg_pk_filter_rewrites' );
function pmg_pk_filter_rewrites( $rules )
{
foreach( $rules as $rule => $rewrite )
{
if( <a href="http://www.php.net/preg_match">preg_match</a>( '/trackback\/\?\$$/i', $rule ) )
{
<a href="http://www.php.net/unset">unset</a>( $rules[$rule] );
}
}
return $rules;
}
 
add_filter( 'bloginfo_url', 'pmg_pk_kill_pingback_url', 10, 2 );
function pmg_pk_kill_pingback_url( $output, $show )
{
if( $show == 'pingback_url' )
{
$output = '';
}
return $output;
}
 
add_filter( 'pre_update_default_ping_status', '__return_false' );
add_filter( 'pre_option_default_ping_status', '__return_zero' );
add_filter( 'pre_update_default_pingback_flag', '__return_false' );
add_filter( 'pre_option_default_pingback_flag', '__return_zero' );
 
add_action( 'xmlrpc_call', 'pmg_pk_kill_xmlrpc' );
function pmg_pk_kill_xmlrpc( $action )
{
if( 'pingback.ping' === $action )
{
wp_die(
__( 'Pingbacks are not supported' ),
__( 'Not Allowed!' ),
<a href="http://www.php.net/array">array</a>( 'response' => 403 )
);
}
}
 
register_activation_hook( __FILE__ , 'flush_rewrite_rules' );
register_deactivation_hook( __FILE__, 'flush_rewrite_rules' );

加上以上代码后,刷新一下博客,屏蔽就完成了!

注意:若你加上上述代码后无法打开博客,则可能是插件冲突,请检查是否启用与Pingback、Trackback有关的插件,若有,请删除代码后停用插件,再加上即可!

完成

加上屏蔽劫持代码后,你会发现世界都清净了!

无需使用任何插件,所有由Pingback与Trackback带来的垃圾评论都消失了!

不会再有成千上万条的垃圾评论来浪费服务器资源!

删除原垃圾评论

若你在屏蔽之前就收到了许多由Pingback与Trackback带来的垃圾评论,那么加上劫持代码后他们是不会自动消失的,需要我们自行删除

删除的最佳办法是进入数据库,选择数据表wp_comments(wp是你的表前缀),这里保存着所有的评论

还没有评论,快来抢沙发!

发表评论

  • 😉
  • 😐
  • 😡
  • 😈
  • 🙂
  • 😯
  • 🙁
  • 🙄
  • 😛
  • 😳
  • 😮
  • emoji-mrgree
  • 😆
  • 💡
  • 😀
  • 👿
  • 😥
  • 😎
  • ➡
  • 😕
  • ❓
  • ❗
  • 70 queries in 0.387 seconds