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

12

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

Pour l'instant, je décroche simplement un appel d'en-tête PHP () dans le hook 'init' du WP, 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?

    
posée mikkelbreum 16.06.2011 - 17:40

4 réponses

8

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

    
réponse donnée Otto 16.06.2011 - 17:54
13

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 qu'il fonctionne en exécutant un test à l'adresse enlace pour assurez-vous que les en-têtes HTTP ont bien changé.

    
réponse donnée ban-geoengineering 13.02.2014 - 15:56
10

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 crochet s'appelle wp_headers et est appelé dans 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 classe wp.

    
réponse donnée Dominic P 27.03.2013 - 23:10
3

send_headers est la méthode préférée pour cette situation, comme le montre le codex . / p>

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

Voici mon explication de la raison pour laquelle sur une question similaire.

    
réponse donnée Bryan Willis 08.01.2016 - 08:51

Lire d'autres questions sur les étiquettes