問題描述

在新增/修改 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。