संदर्भ के आधार पर प्रति पृष्ठ विभिन्न पोस्ट दिखाएं (उदाहरण के लिए, मुखपृष्ठ, खोज, संग्रह)


21

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

पढ़ने-सेटिंग-ब्लॉग-पृष्ठों शो-में सबसे प्रति पेज

मुझे लगता है कि मैं विषय फ़ाइलों को संपादित करके और क्वेरी मापदंडों को बदलकर ऐसा कर सकता हूं, लेकिन मैं एक सरल सेटिंग पृष्ठ पर आसानी से पहुंच बनाना पसंद करूंगा। बहुत समय पहले, मैं एक प्लगइन पर आया था जिसने यह किया था, लेकिन मैं इसे अब नहीं ढूँढ सकता।

किसी को भी ऐसा करने के लिए एक प्लगइन का पता है, या यहां तक ​​कि एक फ़ंक्शन मैं फ़ंक्शन में डाल सकता है। वही काम पूरा करने के लिए?


आप शायद @ चिप-बेनेट के 'डिफरेंट पोस्ट्स प्रति पेज' प्लगइन के बारे में सोच रहे थे: chipbennett.net/plugins/cbnet-different-posts-per-page जो आपको ग्राफिकल तरीके से चाहिए।
टॉम ऑस्टर

जवाबों:


23

मेरा मानना ​​है कि प्लगइन में ऐसा करने का सबसे अच्छा तरीका pre_get_postsएक्शन हुक का सामना करने के बाद निम्न नमूना फ़ंक्शन को चलाना है। $wp_queryवस्तु उपलब्ध है, जिसका अर्थ है अपने सशर्त टैग उपलब्ध हैं, लेकिन इससे पहले वर्डप्रेस पदों, जो साधन आप क्वेरी बदल रहे हैं हो जाता रन किया जा रहा है, बजाय जब query_posts () एक विषय में प्रयोग किया जाता है की तरह एक दूसरे क्वेरी जोड़ने पहली क्वेरी से पहले वार्स फ़ाइल।

function custom_posts_per_page($query) {
    if (is_home()) {
        $query->set('posts_per_page', 8);
    }
    if (is_search()) {
        $query->set('posts_per_page', -1);
    }
    if (is_archive()) {
        $query->set('posts_per_page', 25);
    } //endif
} //function

//this adds the function above to the 'pre_get_posts' action     
add_action('pre_get_posts', 'custom_posts_per_page');

मैं अपनी साइट पर इस फ़ंक्शन का उपयोग करता हूं। आपके लिए यहां इसे काटना और चिपकाना आसान था।
kevtrout

0

आप query_posts का उपयोग करके एक कस्टम लूप कर सकते हैं, और is_home, is_archive, आदि द्वारा पदों की संख्या निर्दिष्ट कर सकते हैं।

यदि क्वेरी_पॉस्ट के साथ-साथ केवल एक सरल कथन


हां, मैंने अपने प्रश्न में इसका उल्लेख किया है। मैं इसे करने का एक तरीका ढूंढ रहा हूं ताकि मुझे सेटिंग्स को बदलने के लिए कई थीम फ़ाइलों को संपादित करने की आवश्यकता न हो। धन्यवाद।
डग

1
यह इस तरह से करने के लिए बुरा विचार है। वर्डप्रेस पहले से ही क्वेरी चलाता है। यदि आप query_postsअपनी थीम में रखते हैं, तो आप मूल क्वेरी को अनदेखा कर देंगे और दूसरा, बेमानी बना देंगे।
Krzysiek Dróżdż

-1

इस सवाल को जोड़ने के लिए। क्या किसी को पता है कि इस फ़ंक्शन के लिए post_per_page कैसे निर्धारित किया जाता है

<?php
if ($_GET['new'] == 1) 
{
    include ( TEMPLATEPATH . '/newpage.php' );
    exit;
}
?>

-1

मुझे लगता है कि मैं विषय फ़ाइलों को संपादित करके और क्वेरी मापदंडों को बदलकर ऐसा कर सकता हूं, लेकिन मैं एक सरल सेटिंग पृष्ठ पर आसानी से पहुंच बनाना पसंद करूंगा।

पूर्णता के हित में, मैंने पाया कि query_postsसंगति के साथ संयुक्त $query_stringअच्छी तरह से काम करता है।

मैंने इस कोड को रखा index.php(मेरी थीम में category.php नहीं है) ...

<?php 
if (!is_front_page()) { 
    query_posts($query_string . "&posts_per_page=20"); 
}
?>

निश्चित रूप से हम यहां जो कर रहे हैं वह लूप की आंतरिक क्वेरी स्ट्रिंग को संशोधित कर रहा है, प्रति पृष्ठ पोस्ट की डिफ़ॉल्ट संख्या को ओवरराइड कर रहा है

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

हालाँकि, कृपया ध्यान दें कि स्वीकृत उत्तर के विपरीत, यह क्वेरी को दो बार चलाएगा , इसलिए यह उतना अच्छा समाधान नहीं है।


जेफ, मैं विभिन्न संदर्भों में लौटे पदों की संख्या को नियंत्रित करने के लिए एक केंद्रीकृत जगह की तलाश में था। आपका उत्तर केवल यही करता है कि यदि आप सभी संदर्भों को संभालने के लिए index.php का उपयोग करते हैं, जो कि अधिकांश थीम नहीं करते हैं। डेटाबेस को कॉल बढ़ाने के लिए (जो प्रदर्शन को प्रभावित करता है), आपकी तकनीक अप्रत्याशित तरीके से सशर्त टैग (जैसे, is_home () या is_front_page) की प्रतिक्रिया को भी बदल सकती है। अंत में, यदि आप किसी पृष्ठ पर द्वितीयक लूप जोड़ना चाहते हैं, तो आपको query_posts का उपयोग नहीं करना चाहिए, लेकिन इसके बजाय "नया WP_Query" (या get_posts) का उपयोग करें।
डग

@ यह एक माध्यमिक लूप नहीं है, यह मुख्य लूप को ओवरराइड कर रहा है - और हां, यह विशेष विषय सब कुछ प्रस्तुत करने के लिए index.php का उपयोग करता है, यह काफी न्यूनतर है। मैंने महसूस किया कि यह एक उत्तर के रूप में यहां अधिक समझ में आता है, लेकिन अगर आप चाहें तो मैं अपना प्रश्न पूछ सकता हूं और यदि यह उत्तर आपको किसी तरह से बंद कर देता है तो इसका जवाब दे सकता है।
जेफ एटवुड

वास्तव में मैंने आपके दूसरे-से-पिछले पैराग्राफ को गलत बताया और सोचा था कि "बड़े" और "छोटे" पदों की सूची एक ही पृष्ठ पर थी, इसलिए मेरे ऊपर का अंतिम वाक्य अप्रासंगिक था। और हाँ, अगर आप चाहें तो अपने सभी कोड को index.php में डालना पूरी तरह से वैध है। और अगर ऐसा है, तो आपका तरीका ऐसा करने का एक त्वरित और आसान तरीका है, इसलिए मैं 20 घंटे का ताला खत्म होने के बाद अपना पद छोड़ दूंगा। फिर भी, केवट्राउट के उत्तर में मूल क्वेरी को संशोधित करने के बजाय एक नई क्वेरी भेजना पहले से बताए गए कारणों (आपके, मेरे और WP कोडेक्स) के लिए कम वांछनीय है।
डग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.