[WordPress] 客製化 RSS Feed 的方法

本篇文章更新時間:2023/09/02
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣新台幣 贊助支持。


WordPress 內建有一個預設的 RSS Feed,就是網站網址後補上 /feed/,像是: https://www.mxp.tw/feed/ 。一般來說沒特殊用途,有人跟你說要 RSS Feed 給這個連結就好!

有興趣購買本篇文章的完整 Yahoo / FTV 民視 RSS Feed 功能完整程式碼的讀者,可以使用 付款連結 金額: 3000 元新台幣,並來信聯絡告知。收到款項後隨即發信完整打包原始碼以及安裝說明。

2023/09 新增 遊戲橘子 beanfun! 的 RSS。金額: 3000 元新台幣

不過有些新聞台接收其他媒體投稿的方式雖然也是 RSS 格式,但會有自己要求的特殊欄位。

常見的有:特殊分類方式 、文章特色圖片 ,或是原本預設的欄位呈現內容的定義調整(例如描述欄位直接塞內文全文)

簡單來說,這樣的修改幅度不建議直接去修改內建的 feed 來完成,建立過一個才是正確做法。

最近剛好客戶有需求實作 民視 、 Yahoo 與 遊戲橘子 beanfun! 的 RSS Feed,正是上述的情況。面對 1. 是否需要輸出該篇文章到 Feed 上?2. 輸出時需要帶入的資訊 這兩個問題,我們使用 ACF 客製化欄位工具在文章編輯處新增一些控制項。

然後就是開始在子主題中 functions.php 補上客製化 RSS 的程式:

function mxp_custom_rss_feed_channels() {
    add_feed('ftv_feed', 'mxp_custom_rss_feed_for_ftv_callback');
}
add_action('init', 'mxp_custom_rss_feed_channels');

function mxp_custom_rss_feed_for_ftv_callback() {
    get_template_part('rss', 'ftv');
}

這邊舉例民視的為主,宣告新增一個 ftv_feed 的 Feed,然後指定一個樣板 rss-ftv.php

然後就是一樣子主題下編輯 rss-ftv.php 檔案,加入下方的程式:

', ']]]]>', $str) . ']]>';
    return $str;
}
$posts = get_posts(
    array(
        'numberposts' => 10,
        'orderby'     => 'date',
        'order'       => 'DESC',
        'meta_query'  => array(
            array(
                'key'     => 'rss1_control',
                'value'   => '1',
                'compare' => '=',
            ),
        ),
    )
);
header('Content-Type: ' . feed_content_type('rss-http') . '; charset=' . get_option('blog_charset'), true);
echo '';
?>
>

<?php wxr_cdata(bloginfo_rss('name'));?> - FTVFeed




zh-tw


 $post) {
    $item = '';
    $item .= '' . apply_filters('the_title_rss', $post->post_title) . '' . PHP_EOL;
    $item .= '' . esc_url(apply_filters('the_permalink_rss', get_the_permalink($post->ID))) . '' . PHP_EOL;
    $item .= '' . mysql2date('D, d M Y H:i:s +0800', get_post_time('Y-m-d H:i:s', true), false) . '' . PHP_EOL;
    $item .= '' . get_the_author_meta('display_name', $post->post_author) . '' . PHP_EOL;
    $item .= '' . get_the_guid($post->ID) . '' . PHP_EOL;
    $item .= 'ID)) . ']]>' . PHP_EOL;    
    $thumbnail_id = get_post_thumbnail_id($post->ID);
    if ($thumbnail_id !== false) {
        $img_url    = wp_get_attachment_image_url($thumbnail_id);
        $upload_dir = wp_upload_dir();
        $item .= '' . PHP_EOL;
    }
    $cat_id   = get_post_meta($post->ID, 'rss1_rss_cat', true);
    $cat_name = get_cat_name($cat_id);
    $the_cat_list = "" . $cat_name . "" . PHP_EOL;
    echo $item . $the_cat_list;
    rss_enclosure();
    do_action('rss2_item');
    echo '' . PHP_EOL;
    $item = '';
}
echo '';

都建立完成後,要去後台「設定」->「永久連結」重新存擋一次來啟用,這樣就完成客製化一個新的 RSS 囉~

其他媒體平台有個別的需求也是比照辦理即可。


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

參與討論

  1. debra15
  2. 「Chun」的個人資料圖片

4 則留言

  1. 你這篇早點出來多好,我之前弄LINE的弄好久啊!

      1. 對,LINE Today,不過我在弄的時候是2018年初,這個外掛或許還沒出來,不然他有用 feed 這個 tag,應該會找到才是。

發佈留言

發佈回覆給「Yiru」的留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon