WP function/filter for modifying http headers?

Is there a dedicated WP function, action or filter to use when adding/modifying the HTTP headers?

For now I just hook a PHP header() call into the WP ‘init’ hook like this:

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

But is this the correct way to do that?

Related posts

Leave a Reply

4 comments

  1. The init action is the wrong place to do it. A better place would be at template_redirect, so that you only affect the front end view of the site and not the admin areas.

  2. Here is the code I’ve used, based on the original question and on Dominic P’s answer…

    /*
     * 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');
    

    Once you’ve added that code to your functions.php file, you can check it works by running a test at http://web-sniffer.net/ to ensure the HTTP headers have indeed changed.

  3. I know it’s been a while, but if anyone else stumbles on this, I found a WordPress hook specifically for modifying HTTP headers. The hook is wp_headers and it’s called in the wp class.

    The first argument passed is an array of headers with the header name as the key. The second argument is a reference to the wp class object.