添加/修改HTTP标头时是否有专用的WP函数,操作或过滤器使用? br />
add_action('init', 'add_header_xua');
function add_header_xua(){
    if(!is_admin()){
        header('X-UA-Compatible: IE=edge,chrome=1');    
    }
}


但这是正确的方法吗?

#1 楼

初始化操作是执行此操作的错误位置。更好的地方是template_redirect,这样您就只会影响网站的前端视图,而不会影响管理区域。

评论


关于钩子的好处,但除此之外,是以正确的方式调用“ raw” header()函数(使用正确的钩子)还是应该使用wp包装器?直接调用标头仅允许添加标头,而不修改标头,就像可以使用过滤器一样(例如当您要操纵主体类时)

–mikkelbreum
2011年6月16日在16:04

header()是唯一的方法。但是,它确实具有第二个参数,该参数可让您替换现有的标头而不是添加到它们中。参见php.net/manual/en/function.header.php

–奥托
2011年6月17日18:49

#2 楼

这是我根据原始问题和Dominic P的答案使用的代码。一旦将代码添加到函数中,就可以使用它。 php文件,可以通过在http://web-sniffer.net/上运行测试以确保HTTP标头确实已更改来检查其是否有效。

#3 楼

我知道已经有一段时间了,但是如果其他人偶然发现了这个问题,我发现了一个专门用于修改HTTP标头的WordPress挂钩。该钩子是wp_headers,在wp类中被调用。

传递的第一个参数是标头名称为键的标头数组。第二个参数是对wp类对象的引用。

评论


还有另一个钩子:send_headers。在挂钩列表中没有看到任何“ wp_headers”。

– Pixeline
2014年11月1日18:26

嗯,这很有趣。您在此处签出wp_headers过滤器。

– Dominic P
2014年11月1日18:39

我认为(但不确定)有“内部”钩子(例如wp_headers)和“公共”钩子(例如“ send_headers”)。 “内部”挂钩在将来的版本中更容易更改。 “公共”钩子被认为更“稳定”。但是我在这里可能是错的,我找不到任何资料来支持我对钩子所做的各种研究所得到的这种感觉。

– Pixeline
2014年11月1日18:43

这是很有可能的,但是在这种情况下,看起来这两个钩子只是执行不同的功能。 send_headers是在发送标头之后触发的操作,而wp_headers是在发送标头之前应用的标头的筛选器。

– Dominic P
2014年11月2日在18:22

好吧...如果只有send_headers拥有一个抄本页面的事实表明了使用哪个...

–drzaus
2015年12月11日20:14在

#4 楼

对于这种情况,send_headerswp_headers更可取,这在法典中得到了证明。

is_admin() || add_action('send_headers', function(){ 
    header('X-UA-Compatible: IE=edge,chrome=1'); 
}, 1);


以下是我对类似问题的解释。