在 WP 上客製化 RSS 的 xml and url (下)

這次需求是
『客製化 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
2
3
4
5
 $p_author_name = get_post_meta(get_the_ID(), 'AuthorName', true );//Default author_name

<dc:creator><![CDATA[<?php the_author() ?>]]></dc:creator>
變成↓
<author><?php echo $p_author_name ?></author>

我更改命名:feed-rsspro.php(類似macbook pro)

3. 指向客製化的 feed-rsspro.php

這步驟讓 RSS 可以有個 link,導向你客製化的 feed-rsspro.php
最重要的一環,也是最難搞的一環
網路上 function 也很多種寫法,舉例這篇 Remove or Edit dc:creator in Feeds
這兩個方法都成功
但是做法是硬生生將 rss2 轉到你客製化的 rsspro 這支檔案

funcion.php 方法一
1
2
3
4
5
remove_all_actions( 'do_feed_rss2' );  
function create_my_custom_feed() {
load_template( TEMPLATEPATH . '/feed-rsspro.php');
}
add_action('do_feed_rss2', 'create_my_custom_feed', 10, 1);
funcion.php 方法二
1
2
3
4
function create_my_custom_feed() {  
load_template( TEMPLATEPATH . '/feed-rsspro.php');
}
add_feed('rss2', 'create_my_custom_feed');

固定網址為其他結構上,卻是失敗
無法導向 theme 這支檔案 /feed-rsspro.php
無法改變 RSS-url 的網址
且網路上說到 TEMPLATEPATH已經被遺棄
其實可以發現到主要是add_actionadd_feed這兩個function的轉換使用

為了實現目標第三個方法

為了客製化到 url 又重新找了一篇文章來鑽研,關鍵性的一篇文章
Custom RSS Template for WordPress

funcion.php方法三
1
2
3
4
5
6
7
8
9
10
11
12
add_action( 'after_setup_theme', 'my_rss_template' );

/* Register custom RSS template. */
function my_rss_template() {
add_feed( 'rsspro', 'my_custom_rss_render' );
}

/*Custom RSS template callback.*/
function my_custom_rss_render() {
get_template_part( 'feed', 'rsspro' );
}
flush_rewrite_rules();//建議加上這行

已經更新遠端的檔案,為什麼 RSS 還在舊版,或者還讀取預設的 wp-includes/feed-rss2.php?

相信你們一定在這條路上,遇到很詭異的事情
明明已經更新 ftp 上的 function.phpfeed-rsspro.php
但是怎樣都不會更新 RSSxml

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

# rss, url, xml

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×