wp_headers बनाम send_headers। प्रत्येक का उपयोग कब करें?


10

मैंने देखा है wp_headersऔर send_headersदोनों एक ही चीज़ के लिए पहले उपयोग किए हैं और मैं सोच रहा हूं कि आप कैसे जानते हैं कि किसका उपयोग करना है और कब ...

send_headersकोडेक्स पेज पर X-UA-Compatible: IE=edge,chrome=1इंटरनेट एक्सप्लोरर के लिए बैकवर्ड संगतता जोड़ने का एक उदाहरण है क्योंकि मेटा टैग अक्सर देर से लोड होने पर इंट्रानेट साइटों पर विफल हो जाता है

यह send_headersउदाहरण जैसा दिखता है:

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

हालांकि wp_headersयह भी कर सकते हैं:

apply_filters ( 'wp_headers', array $headers, WP $this )

add_filter( 'wp_headers', 'wpieeam_headers' );
function wpieeam_headers($headers) {
    if (!is_admin()) {
        $headers['X-UA-Compatible'] = 'IE=edge,chrome=1';    
    }
    return $headers;
}

अद्यतन: मैंने वास्तव में सिर्फ देखा है कि इस या कम से कम एक वार्तालाप कुछ साल पहले इसी तरह के प्रश्न पर शुरू हुआ था ...

इसके अलावा, send_headers को केवल फ्रंट एंड के साथ क्या करना है? मैंने wp_headers को इस तरह चेक करते देखा है:

if ( isset($_SERVER['HTTP_USER_AGENT']) && (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) )

तथा

if (!is_admin()) 

इसलिए मैं सोच रहा हूं कि शायद send_headersउन चेक को बनाने की जरूरत नहीं है ...


1
सामान्यतया, एक एक क्रिया है और दूसरा एक फिल्टर है। किसी घटना के घटित होने पर कुछ करने के लिए क्रियाएँ होती हैं, और फ़िल्टर का उपयोग होने से पहले कुछ संशोधित करने के लिए होता है।
मिलो

जवाबों:


9

ठीक है, तो मुझे लगता है कि मुझे लगा ...

ये दोनों सबसे अधिक भाग के लिए काम करते हैं जैसा कि आप ब्राउज़र को http / php हेडर भेजकर उम्मीद करेंगे। wp_headersवास्तव में send_headers()फ़ंक्शन के अंदर एक फ़िल्टर है। आप कुछ अपवादों के साथ ब्राउज़र को भेजे जाने से पहले हेडर को संशोधित करने के लिए इसका उपयोग कर सकते हैं। wp_headersअगर यह एक स्थिर कैश्ड पृष्ठ के साथ काम कर रहे थे तो कुछ भी करने में सक्षम नहीं होगा ...

यह वह जगह है जहाँ send_headersहुक खेलने में आता है। wp_headersफ़िल्टर के बाद , send_headers()फ़ंक्शन चेक अगर Last-Modifiedभेजा गया है, तो हमें बताएगा कि पृष्ठ कैश किया गया था या नहीं और फिर हमें कैशिंग, सामग्री प्रकार, आदि के बाद इसे हुक करने की अनुमति देता है।

इसलिए मेरे उदाहरण का उपयोग X-UA-Compatibleकरते हुए , जबकि वे दोनों काम करते हैं, मैं उपयोग करने के लिए इच्छुक हूं send_headersक्यों? एक के लिए यदि आप इन दोनों को जोड़ते हैं, send_headersतो हर बार जीत जाएगा और यह सुनिश्चित करेगा कि पृष्ठ कैश होने के बाद भी इसे लोड किया गया है।

एक <meta>टैग का उपयोग करते समय जैसे कई लोकप्रिय फ्रेमवर्क का उपयोग एक्स-यूए-संगत के लिए भी काम करेगा, यह कई ब्राउज़रों में तब तक काम नहीं करेगा जब तक कि शुरुआती हेड टैग के तुरंत बाद लोड नहीं किया जाता है। यह विभिन्न कारणों से होता है जैसे कि अगर "इंट्रानेट" सेटिंग नेटवर्क वाइड है । इस कारण से php पद्धति का उपयोग करना अधिक सुरक्षित है। हालाँकि, यदि आप दोनों को जोड़ना चाहते हैं, तो मेटा टैग जीत जाएगा (यह मानते हुए कि यह बहुत जल्दी शामिल था।

X-UA-Compatibleसंगत के संबंध में , मुझे आशा है कि यह जल्द ही अप्रासंगिक हो जाएगा क्योंकि Microsoft अगले सप्ताह IE के पुराने संस्करणों के लिए समर्थन छोड़ रहा है !


इसके अलावा, मैंने चेक wp_headersका उपयोग किए बिना फ़िल्टर का परीक्षण किया is_admin()और यह admin_headers को संशोधित नहीं करेगा ताकि चेक अनावश्यक हो।

यदि आपको किसी कारण से व्यवस्थापक हेडर को संशोधित करने की आवश्यकता है, तो मुझे पता है कि आप इसे इस तरह से कर सकते हैं, लेकिन मुझे यकीन नहीं है कि यह हर समय काम करेगा ...

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

व्यवस्थापक के लिए जाँच करने के लिए टोस्चो के सुझाव पर आधारित अद्यतन उत्तर:

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

2
आपको अभी भी उपयोग करना चाहिए is_admin() || add_action( … ), क्योंकि यदि आपको इसकी आवश्यकता नहीं है तो पंजीकृत कॉलबैक की सूची को प्रदूषित करने की कोई आवश्यकता नहीं है।
FUXIA

दिलचस्प बात यह है कि ... मैं लगभग दस वर्षों से वर्डप्रेस साइट बना रहा हूं और मैंने उस प्रारूप को या प्रतीक का उपयोग करने से पहले कभी नहीं देखा है। मैंने वास्तव में एक सवाल पूछा था कि अगर आप उस दृष्टिकोण को जोड़ने की तरह महसूस करते हैं, तो दो साल पहले परिस्थितियों को ठीक से कैसे प्रारूपित करें।
ब्रायन विलिस

Toscho मैंने आपके सुझाव के आधार पर अपना उत्तर अपडेट किया। क्या आपका आशय यही था?
ब्रायन विलिस

हां, सही लग रहा है। :)
FUXIA

" send_headersहर बार जीत जाएगा और यह सुनिश्चित करेगा कि पेज कैश होने के बाद भी इसे लोड किया गया है" - बस ध्यान दें कि send_headersप्लगइन्स द्वारा उपयोग किए जाने वाले पेज कैशिंग को काम करने के लिए काम नहीं करता है जैसे कि मेरे परीक्षणों में W3 कुल कैश, या किसी भी स्थैतिक कैशिंग प्रभावी ढंग से सर्वर स्तर पर वर्डप्रेस को बायपास करता है।
निक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.