Ok, então acho que descobri ...
Ambos funcionam na maior parte como seria de esperar, enviando cabeçalhos http / php para o navegador. wp_headers
é na verdade um filtro dentro das funções send_headers()
. Você pode usar isso para modificar os cabeçalhos antes que eles sejam enviados para o navegador com alguma exceção. wp_headers
não poderá fazer nada se uma página estática em cache estiver lidando com ...
É aqui que entra o gancho send_headers
. Após o filtro wp_headers
, a função send_headers()
verificará se Last-Modified
foi enviada com dirá se a página foi armazenada em cache ou não e, em seguida, nos conectará após o armazenamento em cache, o tipo de conteúdo, etc. terem sido enviados.
Então, para o meu exemplo usando X-UA-Compatible
, enquanto os dois funcionam, estou inclinado a usar send_headers
. Por quê? Se você fosse adicionar os dois, send_headers
venceria todas as vezes e garantiria que fosse carregado mesmo se fosse adicionado depois que a página fosse armazenada em cache.
Embora o uso de uma tag <meta>
como muitos frameworks populares usados também funcionassem para x-ua-compatible, ele não funcionará em muitos navegadores, a menos que seja carregado quase imediatamente após a tag principal de abertura. Isso é causado por diversos motivos, como se a configuração "intranet" fosse configurada para toda a rede . Por esse motivo, usar o método php é mais seguro. No entanto, se você fosse adicionar os dois, a meta tag venceria (supondo que fosse incluída cedo o suficiente.
Com relação a X-UA-Compatible
compatible, espero que isso seja irrelevante em breve, já que A Microsoft está abandonando o suporte para versões mais antigas do IE na próxima semana!
Além disso, eu testei o filtro wp_headers
sem usar a verificação is_admin()
e ele não modificou os admin_headers para que a verificação seja desnecessária.
Se você precisou modificar os cabeçalhos de administração por algum motivo, sei que pode fazer assim, mas não tenho certeza se funcionaria o tempo todo ...
function admin_add_my_header() {
header('X-UA-Compatible: IE=edge,chrome=1');
}
add_action( 'admin_init', 'admin_add_my_header', 1 );
Resposta atualizada com base na sugestão de Toscho para verificar o administrador:
is_admin() || add_action('send_headers', function(){
header('X-UA-Compatible: IE=edge,chrome=1');
}, 1);