श्रेणियों के लिए व्यक्तिगत आरएसएस फ़ीड प्रविष्टि लंबाई?


9

मुझे पता है कि wp में एक श्रेणी से rss2 फ़ीड को कैसे पुनः प्राप्त करना है, अर्थात् /feedश्रेणी के नाम के पीछे जोड़ना । हालाँकि जब मैं ऐसा करता हूं, तो उस फ़ीड की सभी प्रविष्टियाँ rss में शामिल नहीं होती हैं, इसका कारण यह है कि मैंने व्यवस्थापक बैकएंड पर 50 के लिए फ़ीड प्रतिबंध को निर्धारित किया है।

मैं यह जानना चाहूंगा कि क्या प्रत्येक श्रेणी के लिए फ़ीड की लंबाई अनिश्चित काल के लिए निर्धारित की जा सकती है / कार्यक्रम के अनुसार।

मुझे फ़ीड के आकार के लिए कोई भी एपीआई सेटिंग नहीं मिली ... किसी भी मदद का यहाँ स्वागत है।

आपकी सहायता के लिए धन्यवाद।


स्टीफन हैरिस और कोडमोंकी दोनों जवाब एक विशेष श्रेणी के लिए काम नहीं करते हैं? अन्यथा दोनों जवाब काम मेरे लिए काम करते हैं! ऐसा क्यों हो सकता है कि यह केवल एक श्रेणी के लिए काम नहीं करता है?
महात्मनिच

जवाबों:


8

आपको सशर्त रूप से 50 (श्रेणियों के लिए फ़ीड होने पर) का उपयोग और सेट करने में सक्षम होना चाहिए । दुर्भाग्य से इस अनसुलझे टीआरसी टिकट हैpre_get_postsposts_per_page

एकमात्र काम-के आसपास हुक करना post_limitsऔर LIMITSQL क्वेरी के भाग को सीधे बदलना है ।

add_action('post_limits','wpse71759_category_rss_limit',10,2);
function wpse71759_category_rss_limit($limit, $query){

     if( $query->is_feed() && $query->is_category() ){
          $paged =  $query->get('paged') ? (int) $query->get('paged') : 1;
          $per_page = 50;
          $page_start = ($paged-1)*$per_page;

          return "LIMIT $page_start, $per_page";
     }
     return $limit;
}

हे स्टीफन मैं उस पर गौर करूंगा, उह वास्तव में मैं हमेशा एक फीड में एक श्रेणी से सभी प्रविष्टियां चाहता हूं, और केवल अपने ब्लॉग पेज पर मैं उस सीमा का प्रतिबंध चाहता हूं जिसे मैंने बैकएंड में सेट किया है, मैं यह कैसे करूंगा?
महात्मनिच

उस मामले में, return "";बजाय "LIMIT $page_start, $per_page"यह करना चाहिए।
स्टीफन हैरिस

अरे आप अपने कोड को थोड़ा समझा सकते हैं? मुझे यकीन नहीं है कि अगर मुझे वही चाहिए जो आप यहां दे रहे हैं।
महात्मनिच

इसलिए श्रेणी फ़ीड के लिए आप सभी पोस्ट वापस करना चाहते हैं - इसलिए आप LIMITअपनी क्वेरी के लिए एक हिस्सा नहीं चाहते हैं । उपरोक्त फ़िल्टर, आपको LIMITरिक्त स्ट्रिंग के साथ भाग को बदलने की अनुमति देता है , ताकि परिणामस्वरूप sql सभी पदों को प्राप्त करेगा।
स्टीफन हैरिस

1
हां, लेकिन मैं इसमें से एक प्लग-इन ( wpcandy.com/teaches/how-to-create-a-functionality-plugin ) बनाने की सलाह दूंगा
स्टीफन हैरिस

2
add_filter('query', 'sql_query_feed_filter');
function sql_query_feed_filter($sql){
    global $wp_query;

    if ($wp_query->is_feed == true &&  isset($wp_query->query_vars['custom_taxonomy']) &&  in_array($wp_query->query_vars['custom_taxonomy'], array('slug1','slug2')) ){
        if (strpos($sql, 'SELECT SQL_CALC_FOUND_ROWS') !== false){
            list($sql,) = explode('LIMIT', $sql);
        }
    }
    return $sql;
}

आपको बस इस फ़ंक्शन को संपादित करना है और अपनी श्रेणी वर्गीकरण द्वारा कर-पत्र को पुनर्मूल्यांकित करना है और स्लग को बहुत अधिक मात्रा में संपादित करना है ...


क्या आप अपने कोड की व्याख्या करना चाहेंगे?
महात्मनिच

सरल एसक्यूएल क्वेरी फ़िल्टर जो फ़ीड पर ट्रिगर होता है ($ wp_query-> is_feed == true) यदि विशिष्ट टैक्सोनॉमी मिलती है ($ wp_query-> query_vars ['custom_taxonomy'] custom_axaxonomy उदाहरण में) और यदि यह कुछ स्लग ($ wp_query-> क्वेरी) के लिए है। ['कस्टम_टैक्सोनॉमी'] == 'स्लग')। अगर यह सब कुछ होता है और सच होता है (किसी साइट पर। आपकी साइट-your-custom-feed-for-category.xml) तो आपको अपने फीड में कोई सीमा परिणाम नहीं मिलेगा (लिमिट मान से विभाजित $ SQL स्टैटमेंट जिसका अर्थ है कि यह अंतिम सीमा के बिना लौटा है ऑपरेटर ... कोई सीमा नहीं। सभी प्रविष्टियाँ प्रति आरएसएस।)
ओलेग बुटुज़ोव

मैं उस कोड को कहां छोड़ूंगा? मेरे विषय के
महात्मनिच

functions.php पूरी तरह से फिट बैठता है। लेकिन स्लग और कस्टम टैक्सोनॉमी का नाम पहले बदल दें। और परीक्षण से पहले ब्राउज़र कैश साफ़ करें (RSS ब्राउज़र द्वारा कैश्ड फीड करता है)।
ओलेग बुटुज़ोव

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