web-dev-qa-db-fra.com

WP fonction/filtre pour modifier les en-têtes http?

Existe-t-il une fonction, une action ou un filtre dédié WP lors de l'ajout/de la modification des en-têtes HTTP?

Pour le moment, je viens de connecter un appel PHP header () dans le hook WP 'init' comme ceci:

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

Mais est-ce la bonne façon de faire cela?

16
mikkelbreum

L'action init est le mauvais endroit pour le faire. Un meilleur emplacement serait template_redirect, de sorte que vous n'affecteriez que la vue frontale du site et non les zones d'administration.

9
Otto

Voici le code que j'ai utilisé, basé sur la question initiale et sur la réponse de 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');

Une fois que vous avez ajouté ce code à votre fichier functions.php, vous pouvez vérifier son bon fonctionnement en exécutant un test sur http://web-sniffer.net/ pour vous assurer que les en-têtes HTTP ont bien été modifiés.

14
ban-geoengineering

Je sais que cela fait longtemps, mais si quelqu'un d'autre tombe sur une erreur, j'ai trouvé un hook WordPress spécialement conçu pour modifier les en-têtes HTTP. Le hook est wp_headers et est appelé dans la classe wp .

Le premier argument passé est un tableau d’en-têtes avec le nom de l’en-tête comme clé. Le deuxième argument est une référence à l'objet de classe wp.

11
Dominic P

send_headers est la méthode préférée par rapport à wp_headers pour cette situation, comme le montre le codex .

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

Voici mon explication pour pourquoi sur une question similaire.

4
Bryan Willis