web-dev-qa-db-ja.com

WP HTTPヘッダを変更するための関数/フィルタ?

HTTPヘッダを追加/変更するときに使用する専用のWP関数、アクション、またはフィルタはありますか?

今のところ、PHP 'init'フックにWP header()呼び出しをフックするだけです。

add_action('init', 'add_header_xua');
function add_header_xua(){
    if(!is_admin()){
        header('X-UA-Compatible: IE=Edge,chrome=1');    
    }
}

しかし、これが正しい方法ですか?

16
mikkelbreum

Initアクションはそれをするのに間違った場所です。より良い場所はtemplate_redirectにあるでしょう、それであなたはサイトのフロントエンドビューだけに影響し、管理領域には影響しません。

9
Otto

これは私が使ったコードで、元の質問と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ヘッダーが実際に変更されたことを確認して、コードが機能することを確認できます。

14

私はそれがしばらく経ったことを知っています、しかし、他の誰かがこれにつまずくならば、私は特にHTTPヘッダーを修正するためのWordPressフックを見つけました。フックはwp_headersで、 wpクラス で呼び出されます。

渡される最初の引数は、キーとしてヘッダー名を持つヘッダーの配列です。 2番目の引数は、wpクラスオブジェクトへの参照です。

11
Dominic P

codex に示されているように、この状況ではsend_headerswp_headersよりも好ましい方法です。

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

これが 理由の説明 /同じような質問です。

4
Bryan Willis