खोज…


वाक्य - विन्यास

  • add_action ('pre_get_posts', 'callback_function_name');
  • फ़ंक्शन कॉलबैक_फ़ंक्शन_नाम ($ क्वेरी) {}
  • // PHP 5.3.0 या इसके बाद के संस्करण के लिए
  • add_action ('pre_get_posts', फ़ंक्शन ($ क्वेरी) {});

पैरामीटर

पैरामीटर विवरण
$ क्वेरी (WP_Query) लूप ऑब्जेक्ट

टिप्पणियों

यदि आप PHP 5.3.0 या इसके बाद के संस्करण का उपयोग कर रहे हैं, तो आप क्लोजर ( अनाम फ़ंक्शन ) का उपयोग कर सकते हैं

add_action( 'pre_get_posts', function( $query ) {
    if( !$query->is_main_query() || is_admin() ) return;

    // this code will run only if
    // - this query is main query
    // - and this is not admin screen
});

और भी विशिष्ट लूप लक्ष्यीकरण

मान लें कि हम मुख्य लूप बदलना चाहते हैं, केवल विशिष्ट वर्गीकरण के लिए या पोस्ट प्रकार के लिए।

book पोस्ट प्रकार संग्रह पृष्ठ पर केवल मुख्य लूप को लक्षित करना।

add_action( 'pre_get_posts', 'my_callback_function' );

function my_callback_function( $query ) {
    if( !$query->is_main_query() || is_admin() ) return;
    if( !is_post_type_archive( 'book' ) ) return;

    // this code will run only if
    // - this query is main query
    // - and this is not admin screen
    // - and we are on 'book' post type archive page
}

आप is_category() , is_tag() और is_tax() का उपयोग करके श्रेणी, टैग या कस्टम टैक्सोनॉमी संग्रह पृष्ठ के लिए भी देख सकते हैं।

आप वर्डप्रेस में उपलब्ध किसी भी सशर्त टैग का उपयोग कर सकते हैं।

केवल एक श्रेणी से पोस्ट दिखाएं

add_action( 'pre_get_posts', 'single_category' );

function single_category( $query ) {
    if( !$query->is_main_query() || is_admin() ) return;

    $query->set( 'cat', '1' );
    return;
}

प्री पोस्ट फिल्टर बेसिक यूसेज मिलता है

कभी-कभी आप मुख्य वर्डप्रेस क्वेरी बदलना चाहते हैं।

फ़िल्टर pre_get_posts जाने का रास्ता है।

उदाहरण के लिए pre_get_posts का उपयोग pre_get_posts आप केवल 5 पोस्ट दिखाने के लिए मुख्य लूप बता सकते हैं। या केवल एक श्रेणी से पोस्ट दिखाने के लिए, या किसी भी श्रेणी आदि को छोड़कर।

add_action( 'pre_get_posts', 'my_callback_function' );

function my_callback_function( $query ) {
    // here goes logic of your filter
}

जैसा कि आप देख सकते हैं, हम अपने कॉलबैक फ़ंक्शन तर्क में मुख्य लूप क्वेरी ऑब्जेक्ट पास कर रहे हैं।

यहाँ महत्वपूर्ण नोट: हम एक संदर्भ के रूप में तर्क दे रहे हैं । इसका मतलब यह है कि हमें इसे काम करने के लिए क्वेरी लौटाने या किसी ग्लोबल्स को सेट करने की आवश्यकता नहीं है। जैसा कि $query मुख्य क्वेरी ऑब्जेक्ट का संदर्भ है, हम अपनी वस्तु पर किए गए सभी बदलाव तुरंत मुख्य लूप ऑब्जेक्ट में परिलक्षित होते हैं।

पोस्ट सूची संपादित करें शेयर से श्रेणी को छोड़ दें

add_action( 'pre_get_posts', 'single_category_exclude' );

function single_category_exclude( $query ) {
    if( !$query->is_main_query() || is_admin() ) return;

    $query->set( 'cat', '-1' );
    return;
}

मुख्य लूप के लिए पोस्ट_पर_पृष्ठ बदलें

हम सभी को $query ऑब्जेक्ट के set() विधि का उपयोग करने की आवश्यकता है।

यह दो तर्क लेता है, पहला जिसे हम सेट करना चाहते हैं और दूसरा जिसे मूल्य निर्धारित करना है।

add_action( 'pre_get_posts', 'change_posts_per_page' );

function change_posts_per_page( $query ) {
    if( !$query->is_main_query() || is_admin() ) return;

    $query->set( 'posts_per_page', 5 );
    return;
}

केवल मुख्य वर्डप्रेस लूप को लक्षित करना

वर्डप्रेस pre_get_posts फ़िल्टर को शाब्दिक रूप से उत्पन्न किसी भी लूप पर लागू कर रहा है। इसका अर्थ है कि हम अपने कॉलबैक फ़ंक्शन में जो भी बदलाव कर रहे हैं, वे सभी एक्ज़िटिंग लूप्स पर लागू होते हैं।

स्पष्ट रूप से यह वह नहीं है जो हम ज्यादातर परिदृश्यों में चाहते हैं।

ज्यादातर मामलों में हम केवल मुख्य लूप को लक्षित करना चाहते हैं, और केवल गैर-व्यवस्थापक स्क्रीन के लिए।

हम सही जगह पर हैं या नहीं यह जाँचने के लिए is_main_query() विधि और is_admin() वैश्विक फ़ंक्शन का उपयोग कर सकते हैं।

add_action( 'pre_get_posts', 'my_callback_function' );

function my_callback_function( $query ) {
    if( !$query->is_main_query() || is_admin() ) return;

    // this code will run only if
    // - this query is main query
    // - and this is not admin screen
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow