ফিডে পৃষ্ঠাগুলি কীভাবে প্রদর্শিত হবে?


13

আমি ফিডে প্রতিটি পৃষ্ঠার সম্পূর্ণ সামগ্রীটি দেখাতে চাই I এটির জন্য আমি অনুসন্ধান করেছি এবং কিছু প্লাগইন পেয়েছি তবে আমি আমার সমস্যার সমাধান করতে পারিনি।

আমি চাই যখন আমি http://swissaudio.com/craftsmanship/feedএটি প্রবেশ করি তখন এটি আমাকে ফিডের পৃষ্ঠা বিষয়বস্তু সরবরাহ করে। আমি এটা কিভাবে করবো?


কেবল নিশ্চিত হওয়ার জন্য, আপনি কি আপনার পোস্টের সম্পূর্ণ সামগ্রীটি কেবল একটি সংক্ষিপ্তসারের চেয়ে ফিডে প্রদর্শন করবেন কিনা বা সমস্ত পৃষ্ঠা (পৃষ্ঠার পোস্টের ধরণের) ফিডেও পুরোপুরি যুক্ত করতে চান?
মজিক

@ মজিক আমি ফিডে পৃষ্ঠার সমস্ত সামগ্রী প্রদর্শন করতে চাই Iআমি এই কোডটি ব্যবহার করি তবে ফলাফল পরিবর্তন ঘটে 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
এটি খুব জটিল প্রমাণিত হয়েছে যে আমি ভাগ্য ছাড়াই আরও কয়েকটি জিনিস পরীক্ষা করেছি যাতে এর জন্য একটি উদারতা খোলে কারণ আমি নিজেই সমাধানটি জানতে চাই। :-)
মজিক

উত্তর:


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/যা আসলে পরিবর্তে মন্তব্যগুলি দেখায়, কীভাবে এটি করবেন কোনও ধারণা?
মজিক

আচ্ছা আমি মনে করি এর জন্য আমাদের নতুন পুনর্লিখনের নিয়ম যুক্ত করা দরকার। যেহেতু ডাব্লুপিটি ডিফল্টরূপে এটি সমর্থন করে না, পরিবর্তে এটি withoutcomments=1সিজেবিজে উত্তর হিসাবে কোয়েরি স্ট্রিং সমর্থন করে। ইউআরএল পুনর্লিখনে আমি মোটেও ভাল নই: ডি
সুমিত

1
ইউআরএল পুনর্লিখনের ক্ষেত্রেও ভাল নয়, এটিকে ঘুরিয়ে withcomments=1দেওয়ার এবং আমার উত্তরে সমর্থন যোগ করার সিদ্ধান্ত নিয়েছে ।
মজিক

সংক্ষিপ্ত দৈর্ঘ্য ফিল্টারের জন্য, এটি কি না তা পরীক্ষা করা উচিত get_option('rss_use_excerpt')নয় !get_option('rss_use_excerpt)কারণ যদি এটি ইতিমধ্যে মিথ্যা হয় তবে একটি অংশের দৈর্ঘ্যের ফিল্টারের প্রয়োজন হবে না, এটি ইতিমধ্যে সম্পূর্ণ সামগ্রী প্রদর্শন করবে। O_o
majick

ওয়েল আমি নিশ্চিত নই কেন কিন্তু আপনি যদি এই লাইন পরীক্ষা 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/ ফিড / থেকে দর্শকদের পুনর্নির্দেশ করতে ব্যবহার করতে পারেন । আদর্শ থেকে অনেক দূরে তবে অন্য কারও জন্য কাজ করার জন্য এটি শুরু start


ব্যবহার return get_the_content_feed()করা আরও ভাল হবে কারণ এটি the_contentফিল্টারগুলিকেও প্রয়োগ করে ... তবে দুর্ভাগ্যক্রমে এটি সামগ্রীর ক্ষেত্রের পরিবর্তে ফিডের বিবরণ ফিল্ডে সম্পূর্ণ সামগ্রীকে আউটপুট করে।
মজিক

3

@ সুমিত দ্বারা উল্লিখিত হিসাবে, আপনাকে কোনও পৃষ্ঠার জন্য মন্তব্য ফিডটি বন্ধ করতে হবে (যা আমি সত্যিই অদ্ভুত বলে মনে করি যেহেতু ডিফল্ট মন্তব্যগুলি পৃষ্ঠাগুলিতে বন্ধ রয়েছে?) ... এটিই আমি শেষ করেছি (পৃষ্ঠা মন্তব্যগুলি পাওয়ার অনুমতি দিয়েছি) ?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;
}

এবং পরিশেষে, একটি পৃষ্ঠায় উদ্ধৃতাংশ প্রদর্শন করে আরএসএস বর্ণনার ঘরে পেতে, আপনি পারে এই কাজ করতে (যা মূলত একটি অনুলিপি আছে 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;
}

ওহ আমি সত্যিই দুঃখিত: ডিআই আমার মন হারিয়ে ফেলেছে আমি withoutcommentsএখন এটি পড়ছিলাম তা আমি দেখতে পাচ্ছি withcomment: ডি এলএল আমার মন্তব্য মুছে ফেলছে;)
সুমিত

কোনও প্রোব এই নিশ্চিতভাবে আমার মন আকৃতির বাইরে বাঁকানো।
মজিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.