Ok so I think I figured it out...
通过向浏览器发送http/php头,这两种方法在很大程度上都可以正常工作。wp_headers
实际上是send_headers()
功能。在将标题发送到浏览器之前,可以使用此选项修改标题,但有一些例外。wp_headers
如果是静态缓存页,则无法执行任何操作。。。
这就是send_headers
钩子开始起作用。在wp_headers
过滤器send_headers()
函数检查是否Last-Modified
将告诉我们是否缓存了页面,然后让我们在缓存、内容类型等全部发送完毕后将其挂接。
因此,对于我的示例,使用X-UA-Compatible
, 虽然它们都有效,但我倾向于使用send_headers
. 为什么如果你把这两个都加起来,send_headers
每次都会获胜,并确保即使在缓存页面后添加,也会加载该页面。
使用时<meta>
标签式many popular frameworks use 也适用于x-ua兼容,除非在开头标记后立即加载,否则在许多浏览器中都不起作用。这是由各种原因造成的,如"intranet" setting is set network wide. 因此,使用php方法更安全。然而,如果您同时添加这两个标签,meta标签将获胜(假设它足够早就包含在内)。
关于X-UA-Compatible
兼容,我希望这很快就会无关紧要Microsoft is dropping support 下周发布旧版IE!
我还测试了wp_headers
过滤时不使用is_admin()
检查,它不会修改admin\\u头,因此不需要检查。
如果你确实因为某种原因需要修改管理员标题,我知道你可以这样做,但我不确定它是否会一直工作。。。
function admin_add_my_header() {
header(\'X-UA-Compatible: IE=edge,chrome=1\');
}
add_action( \'admin_init\', \'admin_add_my_header\', 1 );
<小时>
Updated Answer based on Toscho\'s suggestion to check for admin:
is_admin() || add_action(\'send_headers\', function(){
header(\'X-UA-Compatible: IE=edge,chrome=1\');
}, 1);