<head>
...
<link rel='https://api.w.org/' href='http://example.com/wp-json/' />
<link rel="alternate" type="application/json+oembed" href="http://example.com/wp-json/oembed/1.0/embed?url=..." />
<link rel="alternate" type="text/xml+oembed" href="http://example.com/wp-json/oembed/1.0/embed?url=..." />
</head>
我想避免使用插件。如果可能,是否可以使用remove_action函数删除它们?
remove_action( 'wp_head', 'rsd_link' );
#1 楼
我在filters.php中看到“ add_action('wp_head','rest_output_link_wp_head',10,0)”,这使我认为这应该可以删除rel='https://api.w.org/'
。remove_action( 'wp_head', 'rest_output_link_wp_head' );
其余的... *咳嗽*似乎在default-filters.php中。
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
要删除rest_output_link_header
remove_action( 'template_redirect', 'rest_output_link_header', 11 );
参考文献
wp_oembed_add_discovery_links
rest_output_link_wp_head
rest_output_link_header
#2 楼
此自定义函数应有助于删除页眉和页脚中的所有链接-您可以将其放在活动主题的functions.php
文件中; function remove_json_api () {
// Remove the REST API lines from the HTML Header
remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
remove_action( 'wp_head', 'wp_oembed_add_discovery_links', 10 );
// Remove the REST API endpoint.
remove_action( 'rest_api_init', 'wp_oembed_register_route' );
// Turn off oEmbed auto discovery.
add_filter( 'embed_oembed_discover', '__return_false' );
// Don't filter oEmbed results.
remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );
// Remove oEmbed discovery links.
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
// Remove oEmbed-specific JavaScript from the front-end and back-end.
remove_action( 'wp_head', 'wp_oembed_add_host_js' );
// Remove all embeds rewrite rules.
add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );
}
add_action( 'after_setup_theme', 'remove_json_api' );
此代码段完全禁用了REST API并在您访问
http://example.com/wp-json/
时显示以下内容,其中example.com
是您的网站的域名; {"code":"rest_disabled","message":"The REST API is disabled on this site."}
为了禁用WordPress REST API,请使用代码段下面;
function disable_json_api () {
// Filters for WP-API version 1.x
add_filter( 'json_enabled', '__return_false' );
add_filter( 'json_jsonp_enabled', '__return_false' );
// Filters for WP-API version 2.x
add_filter( 'rest_enabled', '__return_false' );
add_filter( 'rest_jsonp_enabled', '__return_false' );
}
add_action( 'after_setup_theme', 'disable_json_api' );
评论
是否有必要以不同的优先级从头两次删除wp_oembed_add_discovery_links还是错别字?
–布莱恩·威利斯(Bryan Willis)
16年4月5日在16:45
另外,在disable_json_api()中,如果使用最新的wordpress,我们是否可以仅包含2.x版本的过滤器,还是都需要?
–布莱恩·威利斯(Bryan Willis)
16年4月5日在16:47
自定义函数缺少函数disable_embeds_rewrites。完整的源代码可以在github.com/swissspidy/disable-embeds/blob/master/…中找到。
–德雷克斯
16年6月14日在0:46
@Drakes是的,你是对的。缺少它是因为该代码自从去年发布以来尚未更新。为什么不修改/更新上面的代码段来帮助其他人呢?那将是有益和方便的;)
–简丹·伯纳德斯(Jentan Bernardus)
16 Jun 15'在1:42
我宁愿建议使用“禁用嵌入”插件,而不是仅将其中一半复制到您的插件或主题中。更具前瞻性。
–swissspidy
17年2月20日在15:43
#3 楼
禁用oEmbed发现链接和wp-embed.min.js的最佳解决方案和简便方法是在主题(function.php
)中添加此代码段。remove_action( 'wp_head', 'wp_oembed_add_discovery_links', 10 );
remove_action( 'wp_head', 'wp_oembed_add_host_js' );
remove_action('rest_api_init', 'wp_oembed_register_route');
remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10);
希望这可以帮助某人,因为上述解决方案在使用最新版本的WordPress时对我不起作用。
评论
谢谢,但这并不能为我删除api.w.org链接。
–IXN
2015年12月16日在12:52
尝试了所有这些,但是api.w.org标头不会让步!在最近的wordpress版本中,这似乎不再起作用。
–普拉拉德·耶里(Prahlad Yeri)
18年7月21日在13:21
好吧,它起作用了!原来,您必须将其放入主题的function.php中。我试图将其放在我的自定义插件中,以使其适用于所有主题,但显然不起作用。
–普拉拉德·耶里(Prahlad Yeri)
18年7月21日在13:29