Http başlıklarını değiştirmek için WP işlevi / filtresi?


17

HTTP üstbilgileri eklerken / değiştirirken kullanılacak özel bir WP işlevi, eylemi veya filtresi var mı?

Şimdilik sadece bir PHP header () çağrı WP 'init' kanca içine böyle kanca:

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

Ama bunu yapmanın doğru yolu bu mu?

Yanıtlar:


9

Başlangıç ​​eylemi bunu yapmak için yanlış yerdir. Daha iyi bir yer template_redirect konumunda olur, böylece yönetici alanlarını değil, yalnızca sitenin ön uç görünümünü etkilersiniz.


kanca ile ilgili iyi bir nokta, ama bunun dışında, 'raw' header () işlevini (sağ kancayı kullanarak) doğru şekilde mi çağırıyor, yoksa bunun için kullanılması gereken bir wp sarıcı var mı? Üstbilgiyi doğrudan çağırmak, yalnızca bir filtreyle mümkün olacağı gibi (
başlık

1
header () tek yoldur. Ancak, varolan üstbilgileri eklemek yerine onları değiştirmenize izin veren ikinci bir parametresi vardır. Bkz. Php.net/manual/tr/function.header.php
Otto

14

İşte orijinal soruya ve Dominic P'nin cevabına dayanarak kullandığım kod ...

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

Bu kodu function.php dosyanıza ekledikten sonra , HTTP başlıklarının gerçekten değiştiğinden emin olmak için http://web-sniffer.net/ adresinde bir test çalıştırarak kodun çalışıp çalışmadığını kontrol edebilirsiniz .


11

Bir süre geçtiğini biliyorum, ancak başka biri bununla karşılaşırsa, özellikle HTTP başlıklarını değiştirmek için bir WordPress kancası buldum. Kanca wp_headersve wp sınıfında çağrılır .

Aktarılan ilk argüman, başlık adı anahtar olan bir başlık dizisidir. İkinci argüman, wp sınıfı nesnesine bir başvurudur.


Başka bir kanca daha var send_headers. Kanca listesinde herhangi bir "wp_headers" görmüyorum .
pixeline

Hmm, bu ilginç. Sen Kasaya wp_headers filtreyi burada.
Dominic P

"İç" kanca (wp_headers gibi) ve "genel" kanca ("send_headers" gibi) olduğunu düşünüyorum (ama emin değilim). "dahili" kancalar, gelecekteki sürümlerde değiştirilmeye daha yatkındır. "genel" kancalar daha "kararlı" kabul edilir. Ama burada yanlış olabilirim, kancalar üzerinde yaptığım çeşitli araştırmalardan aldığım hissi destekleyecek bir kaynak bulamıyorum.
pixeline

Bu çok mümkün, ancak bu durumda iki kanca basitçe farklı işlevler yerine getiriyor gibi görünüyor. send_headersüstbilgiler gönderildikten sonra tetiklenen bir eylemdir, gönderilmeden wp_headersönce üstbilgilere uygulanan bir filtredir.
Dominic P

iyi ... sadece send_headerskodeks sayfası olması gerçeği hangi kullanılacak herhangi bir gösterge ise ...
drzaus

4

send_headerskodeksindewp_headers gösterildiği gibi bu durum için tercih edilen yöntemdir .

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

İşte benzer bir sorunun nedenini açıklayacağım .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.