फ़ीड में पृष्ठ सामग्री कैसे दिखाएं?


13

मैं फीड में हर पेज की पूरी सामग्री दिखाना चाहता हूं। मैंने इसकी खोज की और कुछ प्लगइन पाया लेकिन मैं अपनी समस्या को हल नहीं कर सका।

मैं चाहता हूं कि जब मैं इसमें प्रवेश करूं http://swissaudio.com/craftsmanship/feedतो मुझे फ़ीड में पृष्ठ सामग्री प्रदान करें। मैं उसे कैसे कर सकता हूँ?


बस यह सुनिश्चित करने के लिए कि क्या आप पूछ रहे हैं कि क्या फ़ीड में अपनी पोस्ट की पूरी सामग्री को केवल एक सारांश के बजाय या पूर्ण रूप में फ़ीड में सभी पृष्ठ (पृष्ठ के पोस्ट) को जोड़ना है या नहीं?
मैजिक

@majick मैं फीड में पेज की सभी सामग्री दिखाना चाहता हूं। मैं इस कोड का भी उपयोग करता add_filter('request', 'feed_request'); function feed_request($qv){ $rss_post_types = array('post', 'page'); if(isset($qv['feed']) && !isset($qv['post_type'])) $qv['post_type'] = $rss_post_types; return $qv; }
हूं,

पहली नज़र में ऐसा लगता है कि यह ठीक काम करना चाहिए, सुनिश्चित करें कि आपने परीक्षण किए गए किसी भी प्लगइन्स को अक्षम कर दिया है और परीक्षण करते समय किसी भी कैश को अक्षम कर दिया है।
मैजिक

@ होम पेज के लिए उपरोक्त कोड फीड कार्य के कारण @majick। कृपया इस साइट को जांचें http://swissaudio.com/feed/कि मैं फ़ीड में प्रत्येक पृष्ठ की सामग्री दिखाना चाहता हूं अर्थात craftsmanshipपृष्ठ के लिए मैं ऐसा कुछ करना चाहता हूं http://swissaudio.com/craftsmanship/feed/लेकिन यह कोई परिणाम नहीं दिखाता है
raxa

3
यह बहुत मुश्किल साबित हुआ है, मैंने कुछ और चीजों का परीक्षण किया है जिनमें कोई भाग्य नहीं है, इसलिए इसके लिए एक इनाम खोला है क्योंकि मैं खुद समाधान जानना चाहता हूं। :-)
Majick

जवाबों:


7

सबसे पहले मुख्य फ़ीड पेज पर हुक /feedका उपयोग करके पोस्ट प्रकार सेट करेंpre_get_posts

$q->set('post_type', array('post', 'page'));

अलग-अलग पृष्ठ पर वर्डप्रेस टिप्पणी फ़ीड दिखाता है, फिर इसे सेट करें falseऔर फ़ीड में पृष्ठ सामग्री प्रदर्शित करें।

$q->is_comment_feed = false;

फ़ीड टेम्पलेट में वर्डप्रेस कॉल the_excerpt_rss()जो फ़िल्टर get_the_excerpt()का उपयोग करके कॉल करती है excerpt_length, लंबाई को अधिकतम में बदल देती है।

पूरा उदाहरण: -

add_action('pre_get_posts', 'wpse_227136_feed_content');
/**
 * Set post type in feed content and remove comment feed
 * @param type $q WP Query
 */
function wpse_227136_feed_content($q) {
    //Check if it main query and for feed
    if ($q->is_main_query() && $q->is_feed()) {
        //Set the post types which you want default is post
        $q->set('post_type', array('post', 'page'));
    }

    //Check if it feed request and for single page 
    if ($q->is_main_query() && $q->is_feed() && $q->is_page()) {
        //Set the comment feed to false
        $q->is_comment_feed = false;
    }
}

add_filter( 'excerpt_length', 'wpse_227136_excerpt_length', 999 );
/**
 * Filter the except length to full content.
 *
 * @param int $length Excerpt length.
 * @return int $length modified excerpt length.
 */
function wpse_227136_excerpt_length( $length ) {
    if (is_feed() && !get_option('rss_use_excerpt')) {
        return PHP_INT_MAX;
    }

    return $length;
}

टिप्पणियों को डिफ़ॉल्ट रूप से सत्य मानें। तो यह बात है..! ठीक है, यह समझ में आता है कि क्या ऐसा करने से /page/comments/feed/वास्तव में टिप्पणियों को दिखाने के बजाय, किसी भी विचार को कैसे करना है?
मैजिक

वैसे मुझे लगता है कि इसके लिए हमें नए रीराइट नियमों को जोड़ना होगा। क्योंकि WP डिफ़ॉल्ट रूप से इसका समर्थन नहीं करता है, इसके बजाय यह withoutcomments=1cjbj द्वारा उत्तर के रूप में क्वेरी स्ट्रिंग का समर्थन करता है। मैं URL पुनर्लेखन में बिल्कुल भी अच्छा नहीं हूँ: D
सुमित

1
URL पुनर्लेखन के साथ अच्छा नहीं है, इसे withcomments=1अपने उत्तर में बदलने और समर्थन जोड़ने का निर्णय लिया ।
मैजिक

अंश लंबाई फ़िल्टर के लिए, यह जाँच get_option('rss_use_excerpt')नहीं करना चाहिए !get_option('rss_use_excerpt)क्योंकि अगर यह पहले से ही गलत है तो एक अंश लंबाई फ़िल्टर की आवश्यकता नहीं होगी, यह पहले से ही पूर्ण सामग्री प्रदर्शित करेगा। O_o
मैजिक

वैसे मुझे यकीन नहीं है, लेकिन अगर आप इस लाइन को जांचते हैं तो core.trac.wordpress.org/browser/tags/4.5/src/wp-includes/… टेम्पलेट में यह इस सेटिंग को प्रभावित नहीं करता है, इसलिए मैं इसे सही कर रहा हूं यह करने के लिए क्या लगता है।
सुमित

4

यह आदर्श नहीं हो सकता है, लेकिन यह एक शुरुआत है। पहले सुनिश्चित करें कि फ़ीड में पूरी सामग्री है:

function fullcontentfeed($content) {
    global $post;
    $content = $post->post_content;
    return $content;
    }
add_filter('the_excerpt_rss', 'fullcontentfeed');

फिर आपको इस url पर पूरा फ़ीड देखना चाहिए

http://swissaudio.com/craftsmanship/feed/?withoutcomments=1

फिर आप add_rewrite_ruleविज़िटर को / फ़ीड / से रीडायरेक्ट कर सकते हैं । आदर्श से दूर, लेकिन शायद किसी और के लिए काम शुरू करना।


उपयोग return get_the_content_feed()करना बेहतर होगा क्योंकि यह the_contentफ़िल्टर भी लागू करता है ... लेकिन दुर्भाग्य से यह सामग्री फ़ील्ड पर बजाय फ़ीड विवरण क्षेत्र में पूर्ण सामग्री को आउटपुट करता है।
मैजिक

3

जैसा कि @Sumit द्वारा उल्लेख किया गया है, आपको एक पृष्ठ के लिए टिप्पणी फ़ीड को बंद करने की आवश्यकता है (जो कि मुझे बहुत अजीब लगता है क्योंकि डिफ़ॉल्ट टिप्पणियाँ पृष्ठों पर बंद हैं?) ... यह वही है जिसके साथ मैं समाप्त हुआ (पृष्ठ टिप्पणियों को प्राप्त करने की अनुमति) ?withcomments=1यदि वांछित हो तो फ़ीड ):

add_action('pre_get_posts', 'rss_page_feed_full_content');

function rss_page_feed_full_content($q) {
    // Check if it feed request and for single page
    if ($q->is_main_query() && $q->is_feed() && $q->is_page()) {
        //Set the comment feed to false
        $q->set('post_type', array('page'));
        // allow for page comments feed via ?withcomments=1
        if ( (isset($_GET['withcomments'])) && ($_GET['withcomments'] == '1') ) {return;}
        $q->is_comment_feed = false;
    }
}

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

add_filter('pre_option_rss_use_excerpt', 'page_rss_excerpt_option');

function page_rss_excerpt_option($option) {
    // force full content output for pages
    if (is_page()) {return '0';}
    return $option;
}

और अंत में, पृष्ठ का अंश प्रदर्शित करने के लिए RSS विवरण फ़ील्ड प्राप्त करने के लिए, आपको यह करना पड़ सकता है (जो मूल रूप से wp_trim_excerptबिना कॉपी के है strip_shortcodes) - ठीक है, मैंने वैसे भी किया था, लेकिन यह पेज पर कुछ अजीब शोर्ट व्यवहार के कारण हो सकता है। परीक्षण कर रहा था:

add_filter('the_excerpt_rss','rss_page_excerpt');

function rss_page_excerpt($excerpt) {
    if (is_page()) {
        global $post; $text = $post->post_content;
        // removed this line otherwise got blank
        // $text = strip_shortcodes( $text );
        $text = apply_filters( 'the_content', $text );
        $text = str_replace(']]>', ']]>', $text);
        $excerpt_length = apply_filters( 'excerpt_length', 55 );
        $excerpt_more = apply_filters( 'excerpt_more', ' ' . '[…]' );
        $excerpt = wp_trim_words( $text, $excerpt_length, $excerpt_more );
    }
    return $excerpt;
}

ओह, मुझे वास्तव में खेद है: DI ने अपना दिमाग खो दिया है मैं इसे पढ़ रहा था withoutcommentsअब मैं यह देख रहा हूं withcomment: D LOL मेरी टिप्पणियों को हटा रहा है;)
Sumit

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