问题描述
在添加/修改 HTTP 标头时是否有专用的 WP 功能,操作或过滤器?
现在我只是把一个 PHP header() 调用到 WP ‘init’ 钩子,如下所示:
add_action('init', 'add_header_xua');
function add_header_xua(){
if(!is_admin()){
header('X-UA-Compatible: IE=edge,chrome=1');
}
}
但这是正确的做法吗?
最佳解决方案
init 操作是错误的做法。一个更好的地方是在 template_redirect,所以你只影响站点的前端视图,而不是管理区域。
次佳解决方案
这是我使用的代码,基于原始问题和 Dominic P 的答案…
/*
* Modify HTTP header
*/
function add_header_xua($headers) {
// var_dump($headers); #=> if you want to see the current headers...
if (!is_admin()) {
$headers['X-UA-Compatible'] = 'IE=edge,chrome=1';
}
return $headers;
}
add_filter('wp_headers', 'add_header_xua');
将该代码添加到 functions.php 文件后,您可以通过在 http://web-sniffer.net/上运行测试来检查它是否正常,以确保 HTTP 标头确实已更改。
第三种解决方案
我知道这是一段时间,但如果有人绊脚石,我发现一个专门用于修改 HTTP 标头的 WordPress 钩子。钩子是 wp_headers
,它在 wp class 中调用。
传递的第一个参数是一个标题的数组,其头名称作为关键字。第二个参数是对 wp 类对象的引用。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。