WP_Query बनाम query_posts बनाम get_posts बनाम pre_get_posts

त्वरित टूटना

  • query_posts - दुर्लभ किनारे के मामलों को छोड़कर उपयोग न करें
  • pre_get_posts - यदि आप किसी पृष्ठ पर डिफ़ॉल्ट क्वेरी को बदलना चाहते हैं तो इसका उपयोग करें
  • नया WP_Query - मुख्य क्वेरी से अलग-अलग परिणाम प्राप्त करने के लिए उपयोग करें
  • get_posts - WP_Query के समान, केवल इसके बजाय सरणी प्रारूप में परिणाम देता है
  • query_posts

    Query_posts का उपयोग करने की अनुशंसा नहीं की जाती है। जो कुछ आप पूरा करने की कोशिश कर रहे हैं उसे पूरा करने के बेहतर तरीके हैं। मुख्य क्वेरी को बदलने की कोशिश कर रहे हैं? परिणामों को फ़िल्टर करने के लिए कार्रवाई pre_get_posts का उपयोग करें (नीचे देखें)। query_posts मूल मुख्य क्वेरी को पक्ष में फेंकता है (इसे पहले ही चलाया जा चुका है), और एक नई मुख्य क्वेरी बनाता है। यह सभी पोस्ट से संबंधित वैश्विक चर बदल देता है, और परिणाम पूरी तरह से नए डेटाबेस कॉल में परिणाम देता है। केवल कोई कारण नहीं है कि आपको मौजूदा क्वेरी को न केवल बदलना चाहिए। मुझे यकीन है कि कुछ किनारे के मामले हैं जहां इसका इस्तेमाल किया जाना चाहिए, लेकिन मैं अपने सिर के ऊपर से किसी के बारे में नहीं सोच सकता। नीचे दिए गए विकल्पों में से एक का उपयोग करें, क्योंकि वे अधिक से अधिक बेहतर अनुकूल होंगे।

    pre_get_posts

    यह एक फिल्टर है। यह मुख्य प्रश्न को किसी पृष्ठ पर संशोधित करता है। इसलिए, उदाहरण के लिए, हम मुखपृष्ठ पर लौटाए गए परिणामों की संख्या बदलना चाहते हैं ...

     फ़ंक्शन tj_change_home_number ($ क्वेरी) {if (is_home ()) {$ query-> set ('post_per_page', 2); वापसी; }} add_action ('pre_get_posts', 'tj_change_home_number'); 

    इससे मुख्य प्रश्न केवल होमपेज पर 2 पोस्ट लौटाएगा।

    WP_Query

    जिसे कहा जाता है किसी भी टेम्पलेट पर मुख्य क्वेरी WP_Query का एक उदाहरण है। जब आप टेम्पलेट के भीतर वैश्विक पोस्ट चर के साथ बातचीत करते हैं, तो यह WP_Query का परिणाम है। इसके लिए उपयोग के मामले असंख्य हैं, लेकिन get_posts के साथ, मैं उन पंक्तियों के साथ संबंधित पोस्ट खींचने के उद्देश्य से एक नया WP_Query घोषित करता हूं। बस ध्यान रखें कि यदि आप एक नए WP_Query के माध्यम से लूपिंग करते समय the_post () फ़ंक्शन चलाते हैं, तो वैश्विक पोस्ट डेटा को मूल मुख्य क्वेरी में रीसेट करने के लिए लूपिंग करने के बाद फ़ंक्शन wp_reset_postdata () चलाएं

    get_posts

    Get_posts का उपयोग करके, आप प्रभावी रूप से एक नया WP_Query कॉल कर रहे हैं, और उस जानकारी को सरणी प्रारूप में वापस कर रहे हैं। मैं आमतौर पर get_posts का उपयोग करता हूं जब मैं मुखपृष्ठ पर स्लाइडर के लिए पोस्ट लौटा रहा हूं, या साइडबार में कुछ संबंधित पोस्ट को कॉल कर रहा हूं। WP_Query को आसानी से उपयोग किया जा सकता है, लेकिन वैश्विक पोस्ट चर को संशोधित किए बिना पोस्ट की सरणी प्राप्त करने का यह एक अच्छा तरीका है। मेरे विचार में इसका उपयोग करने के लिए सबसे सरल और आसान है। आपके डेटा लौटने के बाद आवश्यक कोई फ़ंक्शन कॉल नहीं है, बस सरणी के माध्यम से लूपिंग करें।

    यह थोड़ा उलझन में हो सकता है, इसलिए नीचे दी गई टिप्पणियों में प्रश्न पूछने के लिए स्वतंत्र महसूस करें।

    संदर्भ:
    WP_Query
    pre_get_posts
    query_posts
    get_posts

यह भी देखना