這次需求是
『客製化 RSS,傳送 xml 時某些 tag 內容要改,甚至有部分不要顯示』
『客製化http://your.domain.com/feed/custom-name
』
接下來以此目標講解
首先綜合上篇觀點
你必須要了解,RSS在WP上是關聯這個檔案wp-includes/feed-rss2.php
而我們要客製化的目的是,盡可能不要add或者modify原本的檔案
所以得要讓目前RSS關聯到theme folder下的檔案
以 default 結構來測試,做以下三步驟
1.複製/wp-includes/feed-rss2.php
,放到 theme folder 下
2.對 feed-rss2.php 做變更、客製化
1 | $p_author_name = get_post_meta(get_the_ID(), 'AuthorName', true );//Default author_name |
我更改命名:feed-rsspro.php
(類似macbook pro)
3. 指向客製化的 feed-rsspro.php
這步驟讓 RSS 可以有個 link,導向你客製化的 feed-rsspro.php
最重要的一環,也是最難搞的一環
網路上 function 也很多種寫法,舉例這篇 Remove or Edit dc:creator in Feeds
這兩個方法都成功
但是做法是硬生生將 rss2 轉到你客製化的 rsspro 這支檔案
1 | remove_all_actions( 'do_feed_rss2' ); |
1 | function create_my_custom_feed() { |
固定網址為其他結構上,卻是失敗
無法導向 theme 這支檔案 /feed-rsspro.php
無法改變 RSS-url 的網址
且網路上說到 TEMPLATEPATH
已經被遺棄了
其實可以發現到主要是add_action
、add_feed
這兩個function的轉換使用
為了實現目標第三個方法
為了客製化到 url 又重新找了一篇文章來鑽研,關鍵性的一篇文章
Custom RSS Template for WordPress
1 | add_action( 'after_setup_theme', 'my_rss_template' ); |
已經更新遠端的檔案,為什麼 RSS 還在舊版,或者還讀取預設的 wp-includes/feed-rss2.php?
相信你們一定在這條路上,遇到很詭異的事情
明明已經更新 ftp
上的 function.php
和 feed-rsspro.php
但是怎樣都不會更新 RSS
的 xml
1.所以建議 unction.php
後面加上flush_rewrite_rules()
2.立刻到 WP 控制面板,設定
→固定網址
,在點擊一次save change
3.點左上角,造訪網站,輸入成這樣http://your.domain.com/feed/
這裡會發現 WP 吐出 RSS 為預設的這支檔案 wp-includes/feed-rss2.php
4.後面再輸入 rsspro
(建議一定要走上面/feed/,這樣在顯示rsspro才一定成功,可以自己trytry)
燈燈燈!
鏘鏘鏘!
出現你的客製 rss-url: http://your.domain.com/feed/rsspro
網址美如天仙,xml內容也也是你想要的!
Ref:
Where in WordPress is TEMPLATEPATH initially set?
Flushing Permalinks in WordPress
Remove or Edit dc:creator in Feeds