Http हेडर को संशोधित करने के लिए WP फ़ंक्शन / फ़िल्टर?


17

HTTP हेडर जोड़ने / संशोधित करने के दौरान उपयोग करने के लिए एक समर्पित WP फ़ंक्शन, क्रिया या फ़िल्टर है?

अभी के लिए मैं बस एक PHP हेडर () WP 'init' हुक में इस तरह कॉल हुक:

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

लेकिन क्या ऐसा करने का सही तरीका है?

जवाबों:


9

Init क्रिया इसे करने के लिए गलत स्थान है। एक बेहतर स्थान template_redirect पर होगा, ताकि आप केवल साइट के फ्रंट एंड व्यू को प्रभावित करें न कि एडमिन क्षेत्रों को।


हुक के बारे में अच्छी बात है, लेकिन इसके अलावा, 'रॉ' हेडर () फ़ंक्शन (दाएं हुक का उपयोग करके) सही तरीके से कह रहा है, या क्या इसके लिए उपयोग किया जाना चाहिए एक wp आवरण है? हेडर को सीधे कॉल करना केवल हेडर को जोड़ने की अनुमति देता है, उन्हें संशोधित नहीं करना, जैसे कि यह एक फिल्टर के साथ संभव होगा (जैसे कि जब आप शरीर वर्ग में हेरफेर करना चाहते हैं)
mikkelbreum

1
हैडर () एकमात्र तरीका है। हालाँकि, इसका एक दूसरा पैरामीटर है जो आपको मौजूदा हेडर को जोड़ने के बजाय बदलने देगा। Php.net/manual/en/function.header.php
ओटो

14

यहाँ मूल कोड के आधार पर और डोमिनिक पी के उत्तर पर, मेरे द्वारा उपयोग किया गया कोड है ...

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

एक बार जब आप उस कोड को अपने फ़ंक्शन्स. php फ़ाइल में जोड़ लेते हैं, तो आप HTTP हेडर वास्तव में बदल गए हैं, यह सुनिश्चित करने के लिए http://web-sniffer.net/ पर एक परीक्षण चलाकर काम कर सकते हैं ।


11

मुझे पता है कि यह एक समय हो गया है, लेकिन अगर कोई और इस पर ठोकर खाता है, तो मुझे विशेष रूप से HTTP हेडर को संशोधित करने के लिए एक वर्डप्रेस हुक मिला। हुक है wp_headersऔर इसे wp क्लास में बुलाया जाता है ।

पहला तर्क पारित हेडर के नाम के साथ हेडर की एक सरणी है। दूसरा तर्क wp क्लास ऑब्जेक्ट का संदर्भ है।


एक और हुक है send_headers:। मुझे हुक लिस्ट पर कोई "wp_headers" नहीं दिख रहा है ।
पिक्सलाइन एनवी

हम्म, यह दिलचस्प है। आप यहाँ wp_headers फ़िल्टर चेकआउट करें।
डोमिनिक पी

मुझे लगता है (लेकिन मुझे यकीन नहीं है) कि "आंतरिक" हुक हैं (जैसे कि wp_headers), और "सार्वजनिक" हुक (जैसे कि "send_headers")। "आंतरिक" हुक भविष्य के रिलीज में बदलने के लिए अधिक प्रवण हैं। "सार्वजनिक" हुक को अधिक "स्थिर" माना जाता है। लेकिन मैं सिर्फ यहाँ गलत हो सकता हूँ, मुझे यह महसूस करने के लिए कोई भी स्रोत नहीं मिला है जो मुझे विभिन्न शोधों से मिला है जो मैंने हुक पर किया था।
पिक्सीलाइन

यह बहुत संभव है, लेकिन इस मामले में ऐसा लगता है कि दो हुक बस अलग-अलग कार्य करते हैं। send_headersएक ऐसी क्रिया है जो हेडर भेजे जाने के बाद फायर करती है जबकि wp_headersहेडर पर एक फिल्टर होता है जिसे भेजे जाने से पहले लगाया जाता है।
डोमिनिक पी

अच्छी तरह से ... अगर तथ्य यह है कि केवल send_headersएक कोडेक्स पृष्ठ है जो किसी भी संकेत का उपयोग करना है ...
drzaus

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.