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?
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.
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.
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.
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.