@toscho ने इस उत्तर के लिए एक टिप्पणी छोड़ दी, जो मुझे फिर से सोचनी थी। विशेष रूप से पोस्ट ग्लोबल्स जैसे वैश्विक दायरे में हमें कितना भरोसा करना चाहिए $post
?
तो क्या? वैश्विक चर को आपके चेक रन से पहले सभी से अधिलेखित किया जा सकता है। यह वैश्विक चर का बिंदु है: वैश्विक पहुंच।
$post
उदाहरण के लिए, निश्चित रूप से ग्लोबल्स में से एक है जिसे ज्यादातर या तो थीम के भीतर या प्लगइन्स द्वारा संशोधित किया गया है। फिर भी यह किसी दिए गए टेम्पलेट के भीतर अन्य अनुप्रयोगों में वैश्विक रूप से सबसे अधिक उपयोग किया जाता है, उदाहरण के लिए, संबंधित पोस्ट सेटअप करने के लिए।
कस्टम प्रश्नों के उपयोग के कारण होने वाली विशिष्ट समस्याओं के साथ कई पोस्टों पर (और टिप्पणी करने से) , यह वास्तव में पता चलता है कि ज्यादातर समस्याएँ कस्टम प्रश्नों को रीसेट नहीं किए जाने के कारण होती हैं (कस्टम क्वेरी मुख्य क्वेरी द्वारा सेट ग्लोबल्स को बदल देती हैं)।
इससे, यह स्पष्ट है कि $post
विश्वसनीय नहीं है। कोई भी खराब लिखित कोड जो कस्टम क्वेरी का उपयोग करता है $post
, वैश्विक को बदल सकता है , जो बदले में कुछ (जैसे संबंधित पोस्ट) को तोड़ देगा।
केवल मुट्ठी भर वर्डप्रेस डेवलपर्स वास्तव में कोर के आंतरिक कामकाज में पर्याप्त रूप से जानकार हैं और जानते हैं कि क्या से बचने के लिए और क्या नहीं। उपयोगकर्ताओं की अधिक आबादी को पता नहीं है कि वर्डप्रेस कोर कैसे संचालित होता है।
वे बस एक विषय डाउनलोड करते हैं और प्लगइन्स इंस्टॉल करते हैं जो कि आवश्यक है या यहां तक कि सिर्फ एक ट्यूटोरियल से कोड कॉपी करते हैं। कहते हैं कि वे एक खराब लिखित प्लगइन स्थापित करते हैं जो उनके संबंधित पोस्ट को उनके एकल पोस्ट पर तोड़ देता है, उन्हें कैसे पता चलेगा कि इसका कारण क्या है? क्या वे यह छांट पाएंगे कि क्या वे इस समस्या के बारे में विषय लेखक को एक ईमेल लिखने वाले या इस साइट पर एक प्रश्न पोस्ट करने वाले सौवें व्यक्ति होंगे?
मेरा प्रश्न: जब एक वैश्विक जैसा $post
इतना अविश्वसनीय हो तो आप अन्य आयातित कोड के कारण होने वाली ऐसी समस्याओं से कैसे सुरक्षित रह सकते हैं ? क्या हमें एक वैश्विक उपयोग की तरह होना चाहिए $post
? विकल्प क्या हैं?
इससे पहले कि मैं निष्कर्ष निकालूं, अपने दिमाग को यहां साझा करने के लिए: मैंने (या कुछ विषयों और प्लगइन्स में देखा है, भी) या तो उपयोग करने wp_reset_postdata()
से wp_reset_query()
पहले या उपयोग करने से पहले $post
, यह सुनिश्चित करने के लिए कि वैश्विक को मुख्य क्वेरी के लिए रीसेट किया जा रहा है $post
। लेकिन मैं अपनी थीम में अपना कोड क्यों बढ़ाऊं क्योंकि किसी और ने उसका प्लगइन ठीक से कोड नहीं किया है? और अगर किसी ने अपने कस्टम क्वेरी को ठीक से रीसेट किया है, तो यह ऑपरेशन एक अनावश्यक दूसरी बार चलाया जाता है, जो अच्छा नहीं है।
दूसरी विधि जिसके बारे में मैंने सोचा था कि उसका उपयोग कर रही है $wp_query
और फिर उसके तरीकों का उपयोग कर रही है, जैसे कुछ $wp_query->post
।
इस पर किसी भी विचार की सराहना की जाएगी।