[原創]WordPress Hack -顯示Blogroll中鏈接的RSS

這索本人一篇原創文章,關於 一個簡單的WP Hack
WordPress版本: 2.3.3英文原版

 

本人Blog使用的主題(Theme)萬年不變,但這個主題比較舊,很多細節做得不好,所以偶經常對其小修小改.
今天改造內容如題.

今天瀏覽月光博客時發現的,它首頁的Link欄,每個友情鏈接後面都有RSS地址( 如下圖 ).這點讓我覺得很貼心. 在這個時代 很多時候RSS地址比網站首頁URL還重要 .原因不多說,RSS確實能極大提高效率 .

(試想在Google reader 訂閱了幾十個Blog,如果沒有RSS,你就只能每天到他們的首頁上瀏覽,累不死你,,..)

 

 

搜索一下 ,Wordpress 也有同樣功能.

在WordPress Site Admin (後台) – BlogrollManage Blogroll , Add link 或 Edit Link 的頁面 有一個 Advanced
摺疊項 ,點擊 + 展開後 ,就看到填寫 RSS Address的地方了

WordPress文檔里 say :

RSS URI – URI of the RSS feed associated with the Link, which will be displayed next to the Link itself (if your Template allows it). Example: http://example.com/feed/

就是說,需要Theme支持,才能顯示鏈接的RSS.
很遺憾,我用的這個主題貌似不支持,那麼只能自己修改了.修改這個應該不太困難,畢竟只是簡單改主題,不是WP Hack.

於是查資料, WordPress在側邊欄顯示 Blogroll通過 wp_widget_link 函數 實現,而這個函數直接調用 wp_list_bookmarks 這個 Template Tag . 但在這個Template tag的選項中 我根本找不到任何有關顯示Blogroll RSS的參數!!!

查查資料,有位仁兄跟我一樣,遇到這個問題,幸好,有人回復給出了解決方法.但這個方法 ,但根本不是 Theme修改,而是 WP Core Code Hacking !

給出的方法實現很簡單,修改 WP目錄下 wp-includes/bookmark-template.php 文件

把第94行的

$output .= $before;

替換為下面

$feed = clean_url($row->link_rss);

if ( !$feed )
{
$output .= $before;
}
else
{
$output .= $before . ‘rss ‘;
}

 

這個代碼容易看懂.如果只是想顯示文字RSS鏈接,不顯示RSS圖標的話,可以把img標籤刪掉改為 ” (RSS) “形式.

但是,這段代碼貌似根本錯誤,經過實驗,完全不 Work !

仔細研究 bookmark-template.php 文件可以發現,wp_list_bookmarks 函數只是循環產生不同分類的 Blogroll .而真正產生每個鏈接是調用同文件里的 _walk_bookmarks 函數 .經過本人研究,正確方法是修改_walk_bookmarks這個函數 .

把bookmark-template.php 文件 (位於 wp-includes目錄下) 中的 _walk_bookmarks函數 倒數第二行 :
$output .= “$after\n”;

替換為下面內容:

$feed = clean_url($bookmark->link_rss);
if ( !$feed )
{
$output .= “$after\n”;
}
else
{
$output = $output . ‘ (RSS)‘ . “$after\n”;
}

 

演示見本Blog側邊欄 .效果還算完美

PS:這段代碼關鍵是 $bookmark->link_rss 這個變量,官方文檔里沒有任何地方提到 .事實上這是偶靈機一動想出來的,一實驗居然真的可以 .^ -^

於是問題算解決了 ,但這樣的話,WordPress這篇文檔里的敘述根本是錯誤的 ……

而且, wp_list_bookmarks 標籤里無法實現 顯示Blogroll RSS 鏈接
那麼 Site Admin (後台) – BlogrollManage Blogroll , Add link 或 Edit Link 這裡 填寫的 RSS URI 有啥用? 難道只是給自己看得嗎?

9 Replies to “[原創]WordPress Hack -顯示Blogroll中鏈接的RSS”

  1. @天涯舞草
    偶現在習慣用Google Reader了,訂閱了近100個RSS

    @風吟
    我裝了40幾個。。。。

    @半
    你要不懂技術,那還有啥人懂?

Comments are closed.