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


17

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

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

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

しかし、これはそれを行う正しい方法ですか?

回答:


9

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


フックに関する良い点ですが、それとは別に、「raw」header()関数を(正しいフックを使用して)正しい方法で呼び出すこと、またはこれに使用するwpラッパーがありますか?ヘッダーを直接呼び出すと、ヘッダーを追加することのみが可能になり、フィルターでは可能になりません(bodyクラスを操作する場合など)
-mikkelbreum

1
header()が唯一の方法です。ただし、既存のヘッダーを追加する代わりに置き換えることができる2番目のパラメーターがあります。php.net/manual/en/function.header.phpを
オットー

14

元の質問とドミニク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ヘッダーが実際に変更されたことを確認することで、そのコードを確認できます。


11

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

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


別のフックがあります:send_headersフックリストに「wp_headers」が表示されません。
ピクセリン14年

うーん、それは面白いです。ここでwp_headersフィルターをチェックアウトします。
ドミニクP 14年

「(内部)フック(wp_headersなど)」と「パブリック」フック(「send_headers」など)があると(しかし確信はありませんが)考えます。「内部」フックは、将来のリリースで変更される傾向があります。「パブリック」フックは、より「安定」と見なされます。しかし、私はここで間違っているだけかもしれません、私はフックで行ったさまざまな研究から得たこの感覚をバックアップするためのソースが見つかりません。
ピクセリン14年

これは非常に可能ですが、この場合、2つのフックは異なる機能を実行するように見えます。 send_headersは、ヘッダーが送信された後に発生するアクションで、ヘッダーが送信wp_headersされる前に適用されるフィルターです。
ドミニクP 14年

うーん...だけという事実であればsend_headers...コーデックスのページを持っているが、使用するの兆候である
drzaus

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.