কাস্টম পোস্ট প্রকার আরএসএসে কাস্টম ক্ষেত্রগুলি যুক্ত করুন


17

আমি http://example.com/feed/?post_type=my_custom_post_type এ থাকা পোস্টের প্রকারের জন্য আরএসএস ফিডে আমার কাস্টম পোস্ট প্রকারে কাস্টম ক্ষেত্রগুলি যুক্ত করতে চাই

আমি নিয়মিত ফিডের জন্য এটি করার তথ্য দেখেছি কিন্তু কাস্টম পোস্ট টাইপ ফিডটি কীভাবে পুনরায় লিখতে হয় তার জন্য কিছুই নেই।

আমাকে ফিডে 10 - 15 টি আইটেম যুক্ত করতে হবে (প্রথম আইন, দ্বিতীয় তৃতীয় আইন, তৃতীয় আইন, দাম, ক্রয় লিঙ্ক ...)

উত্তর:


20
function add_custom_fields_to_rss() {
    if(get_post_type() == 'my_custom_post_type' && $my_meta_value = get_post_meta(get_the_ID(), 'my_meta_key', true)) {
        ?>
        <my_meta_value><?php echo $my_meta_value ?></my_meta_value>
        <?php
    }
}
add_action('rss2_item', 'add_custom_fields_to_rss');

আপনার ফিডে যোগ করার জন্য আপনার বিকল্প এবং অন্য কোনও মেটা মানগুলি সক্ষম হতে হবে।


1
সুতরাং আমি প্রতিটি মেটা কী (সম্ভবত প্রায় 10) জন্য পোস্ট টাইপ চেক পোস্টে একটি আইটেম যুক্ত করতে হবে তারপর টেমপ্লেটে কল? আপনি কেবল পোস্ট আইডি দিয়ে মেটা মান অঞ্চলে get_post_meta কল করতে পারবেন না?
কার্টিজমলে le

2
চমৎকার উত্তর!
মাইকস্কিঙ্কেল

@ কর্টিজমলে, আমি স্রেফ সহজ উত্তরটি অন্তর্ভুক্ত করেছি। আপনি যদি এই অনেকগুলি ক্ষেত্রের দিকে টানছেন তবে আমি সম্ভবত @ মাইকসচিনেলের উত্তর মতো আরও কিছু ফর্ম্যাটেড নিয়ে যেতে চাই।
সুন্দরবায়ম্প

19

হাই @ কার্টিজমলে:

পিগজিব্যাকিং বন্ধ চমৎকার উত্তর, এটা আমার স্পিন দিয়ে, এখানে কিভাবে আপনি একাধিক কাস্টম ক্ষেত্র করতেই পারি (আমি 3 করেনি, আপনি আরো কি করতে পারেন):

add_action('rss2_item', 'yoursite_rss2_item');
function yoursite_rss2_item() {
  if (get_post_type()=='my_custom_post_type') {
    $fields = array( 'field1', 'field2', 'field3' );
    $post_id = get_the_ID();
    foreach($fields as $field)
      if ($value = get_post_meta($post_id,$field,true))
        echo "<{$field}>{$value}</{$field}>\n";
  }
}

পিএস @ ব্যাখ্যাtyboymp প্রপস দিতে ভুলবেন না কারণ তার উত্তর দেওয়ার আগে আমি কীভাবে এটি করব তা জানতাম না। আমি কেবল উত্তর দিচ্ছি কারণ তিনি ফিরে আসার আগে কত দিন হবে তা আমি নিশ্চিত নই তাই আমি ঠিক সময়টিতে আপনাকে একটি উত্তর দেওয়ার সিদ্ধান্ত নিয়েছি।


7

আপনাকে এই চমৎকার টুকরো তথ্যের জন্য ধন্যবাদ জানাই।

আমি ইতিমধ্যে অন্য দুজন যা লিখেছি তা প্রসারিত করতে চেয়েছিলাম ... এটি যাচাই করার জন্য আপনার অবশ্যই একটি কাস্টম নেমস্পেস থাকতে হবে। আপনি এটি কীভাবে করেন তা এখানে:

/* IN ORDER TO VALIDATE you must add namespace   */
add_action('rss2_ns', 'my_rss2_ns');
function my_rss2_ns(){
    echo 'xmlns:mycustomfields="'.  get_bloginfo('wpurl').'"'."\n";
}

এবং তারপরে কাস্টম নেমস্পেসের সাথে ক্ষেত্রের নাম আইটেমটির উপস্থাপন করুন উদাহরণস্বরূপ, আমি "মাইকাস্টমফিল্ডস" ব্যবহার করেছি নীচে দেখুন:

/*  add elements    */
add_action('rss2_item', 'yoursite_rss2_item');
function yoursite_rss2_item() {
  if (get_post_type()=='my_custom_post_type') {
    $fields = array( 'field1', 'field2', 'field3' );
    $post_id = get_the_ID();
    foreach($fields as $field)
      if ($value = get_post_meta($post_id,$field,true))
        echo "<mycustomfields:{$field}>{$value}</mycustomfields:{$field}>\n";
  }
}

পার্শ্ব নোটে আপনি 3 টির মধ্যে যে কোনও একটিতে হুক করে একটি ক্রিয়া ব্যবহার করতে পারেন

    rss2_ns : to add a specific namespace
            add_action('rss2_ns', 'my_rss2_ns');

    rss2_head : to add tags in the feed header
            add_action('rss2_head', 'my_rss2_head');

    rss2_item : to add tags in each feed items
            add_action('rss2_item', 'my_rss2_item');

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