पोस्ट_पर_पृष्ठ की कोई सीमा नहीं है


41

मैं सभी पोस्ट को वापस करना चाहता हूं query_posts। मैं posts_per_pageवास्तव में उच्च संख्या में स्थापित करने की कोशिश की , लेकिन query_postsबाहर निकलता है और किसी भी पोस्ट को वापस नहीं करता है। एक सीमा के बिना पदों को क्वेरी करने का सही तरीका क्या है?

$args = array(
    'post_type'      => 'post',
    'cat'            => '22,47,67',
    'orderby'        => 'name',
    'order'          => 'ASC',
    'hide_empty'     => 1,
    'depth'          => 1,
    'posts_per_page' => ?
    );

6
मैं थोड़ी देर के लिए और WP कोडेक्स खोज के लिए Googling किया गया है, लेकिन मैं सिर्फ इस सरल सवाल का सीधा जवाब नहीं मिल सकता है। मेरा मानना ​​है कि मेरा प्रश्न उदाहरण कोड के साथ स्पष्ट रूप से लिखा गया है, और मेरा प्रयास क्या था (तर्क के लिए एक उच्च मूल्य स्थापित करना)। मैं एक WP विशेषज्ञ नहीं हूँ, इसलिए मैं सवाल पूछने के लिए यहाँ आया था। यहां तक ​​कि उन प्रश्नों के उत्तर प्रदान करना जो आपके लिए तुच्छ प्रतीत होते हैं, इन स्टैक एक्सचेंज समुदायों को बढ़ाने में सहायक होते हैं। मैं व्यक्तिगत रूप से अपने खोज परिणामों में एक स्टैक ओवरफ्लो लिंक देखकर प्यार करता हूं, जैसा कि एक गंदे मंच के लिंक के विपरीत है।
बंजर

इसके अलावा, उत्तर के लिए धन्यवाद। आपको इसे उत्तर के रूप में पोस्ट करना चाहिए, न कि टिप्पणी के रूप में, इसलिए मैं इसे स्वीकार कर सकता हूं।
बंजर

मुझे आपकी बात मिल गई है और मैं प्रश्न लिखने में आपके प्रयास की सराहना करता हूँ । मैं यह भी मानता हूं कि गैर-विशेषज्ञ प्रश्न इस समुदाय में खुद को मूल्यवान साबित कर सकते हैं। दूसरी ओर, ऐसे कई सवाल कुछ विशेषज्ञों को यहां शामिल होने से हतोत्साहित कर सकते हैं। मुझे लगता है कि यह किसी तरह का संतुलन है। वैसे भी मैं एक बड़ा मतदाता हूं, इसलिए मैं आपके अगले सवालों का इंतजार कर रहा हूं :) डब्ल्यूपीएसई पर यहां बहुत अच्छा समय है।
मिकाल मऊ

पुनश्च: आप भी बदलना चाहते हैं typeके लिए post_type(या पूरी तरह इस लाइन निकालने के लिए)। मैं रुटविक के उत्तर और आपके प्रश्न दोनों को संपादित करूंगा ताकि किसी को इस छोटी सी गलती को कॉपी-पेस्ट करने से रोका जा सके।
मिकाल मऊ

@ सुधार आदमी के लिए धन्यवाद ... बस posts_per_page पर ध्यान केंद्रित किया इसलिए टाइपो की नकल की! ;)
रुटविक गंगूरडे 19

जवाबों:


81

-1 आपका जवाब है! posts_per_page यहाँ के लिए देखो ।

$args = array(
'post_type'      => 'post',
'cat'            => '22,47,67',
'orderby'        => 'name',
'order'          => 'ASC',
'hide_empty'     => 1,
'depth'          => 1,
'posts_per_page' => -1
);

महत्वपूर्ण चेतावनी : इसके परिणामस्वरूप बहुत बड़ी क्वेरी हो सकती है जो साइट को नीचे ला सकती है। ऐसा केवल तभी करें जब आप सुनिश्चित हों कि आपका डेटाबेस इसे संभाल सकता है। सार्वजनिक थीम या प्लग इन में नहीं।


6
महत्वपूर्ण चेतावनी: इसके परिणामस्वरूप बहुत बड़ी क्वेरी हो सकती है जो साइट को नीचे ला सकती है। ऐसा केवल तभी करें जब आप सुनिश्चित हों कि आपका डेटाबेस इसे संभाल सकता है। सार्वजनिक थीम या प्लग इन में नहीं।
FUXIA

@toscho उत्तर के अपडेट के रूप में अपनी टिप्पणी जोड़ना।
रुटविक गांगुर्दे

तुम मेरी जान बचा लो !!
डर्लन डाइटरिच

@DarlanDieterich मुझे खुशी है कि मैं मदद कर सकता हूँ! :)
रुटविक गांगुर्ड

23

या वैकल्पिक रूप से आप WP_Query(जो query_postsउपयोग करता है) nopagingतर्क पास कर सकते हैं , जो मूल रूप से एक ही काम करता है ।।

$args = array(
    'nopaging' => true
    // Your other args, etc..
);

यह बिल्कुल वैसा ही होगा, लेकिन अगर आपको बाद में इसे वापस देखना है और याद नहीं है कि आप क्या कर रहे थे, तो मुझे व्यक्तिगत रूप से लगता है कि यह आपके लिए अधिक स्पष्ट होगा, यह आप क्या है जो उस पैरामीटर के साथ args के अंदर चाह रहे थे सरणी।

जैसा कि मैंने उल्लेख किया है, वे दोनों वास्तव में एक ही हासिल करेंगे।

एक से अधिक दृष्टिकोण रखने के लिए चोट नहीं पहुंचा सकते हैं, और जो आप जानते हैं उसे साझा करना हमेशा अच्छा होता है, यह कहने के लिए पर्याप्त है कि मेरे जवाब का कारण, आपके पास पहले से ही पर्याप्त होने के बावजूद;);


3

आपके बच्चे के विषय फ़ंक्शन फ़ाइल से:

add_action( 'pre_get_posts', 'wpsites_no_limit_posts' );

function wpsites_no_limit_posts( $query ) {

if( $query->is_main_query() && !is_admin() && is_home() ) {

$query->set( 'posts_per_page', '-1' );
$query->set( 'order', 'ASC' );
$query->set( 'post_type', 'post' );
$query->set( 'cat', '22,47,67' );
$query->set( 'orderby', 'name' );
$query->set( 'order', 'ASC' );
$query->set( 'hide_empty', '1' );
$query->set( 'depth', '1' );

    }

}

1

आपके समस्या का सही उत्तर है 'posts_per_page' => -1क्योंकि -1प्रति पृष्ठ असीमित पोस्ट वापस आएंगे जैसा कि अन्य उपयोगकर्ता जवाब देते हैं।

मैं सिर्फ इस Q / A में एक ऐड जोड़ना चाहता हूं,

यदि आप वर्डप्रेस एडमिनिस्ट्रेशन पैनल पर रीडिंग सेटिंग से प्रति पेज की संख्या प्राप्त करना चाहते हैं, तो आपको get_option()फ़ंक्शन को कॉल करना होगा और posts_per_pageइसे एक स्ट्रिंग के रूप में पास करना होगा।

$args = array(
    'post_type'      => 'post',
    'cat'            => '22,47,67',
    'orderby'        => 'name',
    'order'          => 'ASC',
    'hide_empty'     => 1,
    'depth'          => 1,
    'posts_per_page' => get_option('posts_per_page')
    );

मुझे उम्मीद है कि यह जवाब किसी की मदद करेगा क्योंकि यह मेरी मदद करेगा। हैप्पी कोडिंग Stackexchange उपयोगकर्ता


यह वास्तव में एक अच्छा जोड़ है!
हर्बर्ट वान-व्लिट

1

या ..

function getAll($arg, $posts_per_page = 50)
{
    $data = array();
    $page = 1;

    do{
        $arg['paged'] = $page;
        $arg['posts_per_page'] = $posts_per_page;

        $query = new WP_Query($arg);

        foreach ($query->posts as $post){
            $data[] = $post;
        }

        $page++;

    }while(count($query->posts) === $posts_per_page);

    return $data;
}

2
प्रश्न को हल करने के लिए आपको अपना कोड, अपना विचार समझाने के लिए संदर्भ जोड़ना चाहिए।
बुलेटी

1

कुछ संशोधन के साथ रिकार्डो का उपयोग करना:

static $paged;
$post_ids = [];
do {
    $paged++;
    $defaults = [
        'fields' => 'ids', // Only return the ID field to make this query faster.
        'post_type' => 'post',
        'posts_per_page' => 100,
        'no_found_rows' => false, // We need pagination & the count for all posts found.
        'paged' => $paged,
        'update_post_term_cache' => false,
        'update_post_meta_cache' => false,
    ];
    $query = new WP_Query($defaults);
    if ($query->have_posts()) {
        foreach ($query->posts as $id) {
            $post_ids[] = $id;
        }
    }
} while ($query->max_num_pages > $paged);

return $post_ids;

यह केवल आईडी पंक्ति के खिलाफ क्वेरी करने और टर्म और मेटा कैश अपडेट करने से बचने से नाटकीय रूप से क्वेरी समय बढ़ाएगा।


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