这索本人一篇原创文章,关于 一个简单的WP Hack
WordPress版本: 2.3.3英文原版
本人Blog使用的主题(Theme)万年不变,但这个主题比较旧,很多细节做得不好,所以偶经常对其小修小改.
今天改造内容如题.
今天浏览月光博客时发现的,它首页的Link栏,每个友情链接后面都有RSS地址( 如下图 ).这点让我觉得很贴心. 在这个时代 很多时候RSS地址比网站首页URL还重要 .原因不多说,RSS确实能极大提高效率 .
(试想在Google reader 订阅了几十个Blog,如果没有RSS,你就只能每天到他们的首页上浏览,累不死你,,..)
搜索一下 ,Wordpress 也有同样功能.
在WordPress Site Admin (后台) – Blogroll – Manage 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图标的话,可以把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 (后台) – Blogroll – Manage Blogroll , Add link 或 Edit Link 这里 填写的 RSS URI 有啥用? 难道只是给自己看得吗?
用过reader可是还是觉得进首页好,我们要读的不只是内容。
这也许就是方便给我们带来的一些取舍。
不怕告诉你.我wp只装了两个插件………一个coolplayer
一个禁止html代码插件…寒酸!!!
恩那费你力去开MSN了。。。
错别没有技术,你真的费力了呵。
@天涯舞草
偶现在习惯用Google Reader了,订阅了近100个RSS
@风吟
我装了40几个。。。。
@半
你要不懂技术,那还有啥人懂?
偶发现——的确只是在后面标上了(RSS)而已=v=链接地址还是首页地址
@lovee 有几个链接貌似没RSS..
地址用 # 代替了,以求整齐美观
话说,偶的博客是有rss地说=v=
直接给你地址好了:
feed://hi.baidu.com/loveehome/rss
估计可能是因为地址的问题把。。。。
我在侧边栏有写你的RSS啊…
<li><a href="http://hi.baidu.com/loveehome" rel="friend" title="Lovee兄博客,许多在日本的见闻">Lovee Home</a> <a href="http://hi.baidu.com/loveehome/rss" title="RSS FEED" >(RSS)</a> </li>
RSS地址写的是 http://hi.baidu.com/loveehome/rss
因为feed://协议貌似IE不支持…
汗,点错了=v=