问题描述

在添加/修改 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。