当前位置:
首页 > RSS技术 > 为WordPress添加RSS阅读功能
欧洲展区 of 金佳吉国际连锁网上展览会 | 欢迎生产厂家参展、营销企业合作展出。

为WordPress添加RSS阅读功能

为WordPress添加RSS阅读功能

你现在使用什么工具订阅RSS的呢?google reader ? 鲜果?还是有道?有没有想过在自己的博客上增加这样一个阅读功能呢?把你订阅的RSS和大家一起分享?

如果你看了我的“超级链接”,就应该知道这样一个功能是很容易实现的,只是我的这个“超级链接”只显示了最新的1篇文章标题,如果想显示多篇文章也是可以实现的。下面就说一说这个超级链接实现的方法,稍微扩展一下,就可以成为你的RSS阅读器。

原理:

原理说起来很简单,用php对xml文件进行解析(RSS生成的就是固定格式的xml文件),这里不打算对xml文件进行解说,有兴趣的可以参考相关资料。但是如果用基本的php语句实现解析xml文件也未免有些小复杂,这个时候,就显出开源的力量了。

目前比较流行而且效率比较高的用php实现的解析RSS库有MagpieRSS 和 SimplePie 。最初我就是使用SimplePie这个库,但是后来感觉wordpress里应该带有RSS解析的功能,于是又开始阅读wordpress的源代码,终于在rss.php这个文件中找到了相关的操作。

fetch_rss、wp_rss、get_rss函数:
原来wordpress在wp-includesrss.php文件中已经封装了MagpieRSS,又在原始的MagpieRSS上作了一些改动,比如把获取的RSS缓存到数据库中。

fetch_rss根据传递进来的feed地址返回一个MagpieRSS对象。这个函数使用起来是最灵活的。

wp_rss和get_rss的原型分别如下:
wp_rss( $url, $num_items = -1 ) 和 get_rss ($url, $num_items = 5)
这两个函数都是调用了fetch_rss,$num_items决定显示的文章数量,wp_rss函数默认显示所有输出的文章,get_rss默认显示最新的5篇文章。这两个函数使用起来虽然方便,但是太死板,不能按照自己的方式进行输出。

实现方法:

在使用上面的3个函数之前,需要先把rss.php这个文件包括进来,不然会调用失败

require_once (ABSPATH . WPINC . '/rss.php');

以显示本站的rss为例,比如显示最新的2篇文章,代码如下:

require_once (ABSPATH . WPINC . '/rss.php');
wp_rss('http://domety.com/feed/',2); 

就这么两行代码即可,简单否?下面将通过“超级链接”的实现过程详细解说一下fetch_rss的使用方法。

实例:

使用wordpress现有的链接表,为了区分其它链接和方便管理,我新建了一个“超级链接”的链接分类(分类ID为53),
然后在添加链接的时候除了网站标题和网站地址外,再把feed地址添加进去。
在主题文件夹下新建一个page-superlinks.php,该文件为页面模板,内容如下:

< ?php
/*
Template Name: Page Super Links
*/
get_header();
require_once (ABSPATH . WPINC . '/rss.php');
?>
<ul>
</ul>
<ul>< ?php</ul>
</ul><ul>
</ul><ul>$bookmarks = get_bookmarks('category=53');</ul>
<ul>
</ul><ul>foreach($bookmarks as $bookmark) {</ul>
<ul>
</ul><ul>$url = $bookmark-&gt;link_rss;</ul>
<ul>
</ul><ul>if ( $rss = fetch_rss( $url ) ) {</ul>
<ul>
</ul><ul>$item = (array) $rss-&gt;items[0];</ul>
<ul>
</ul><ul>?>
	<li>
<div style="background: url(&lt;?php echo $bookmark-&gt;link_url.'favicon.ico';"><span><a title="订阅&lt; ?php echo $rss-&gt;channel['title']; ?&gt;" href="&lt;?php echo $bookmark-&gt;link_rss; ?&gt;">RSS</a></span><strong><a title="访问&lt; ?php echo $rss-&gt;channel['title']; ?&gt;" href="&lt;?php echo $rss-&gt;channel['link']; ?&gt;">&lt; ?php echo $rss-&gt;channel['title']; ?&gt;</a></strong>
<small>&lt; ?php echo $rss-&gt;channel['description']; ?&gt;</small></div>
最新文章: <a title="阅读原文: &lt; ?php echo $item['title']; ?&gt;" href="&lt;?php echo $item['link']; ?&gt;">&lt; ?php echo $item['title']; ?&gt;</a></li>
</ul>
&lt; ?php }} ?&gt;
<div></div>
&lt; ?php
get_footer();
?&gt;

然后再添加一个页面,标题为“超级链接”,页面模板选择刚才新建的Page Super Links。这样就大功告成了,去添加你的相关链接就行了。

代码中首先调用了get_bookmarks(‘category=53′)来获取“超级链接”下的所有链接,
然后通过foreach循环对每个链接进行相应的处理,其中就包括了对feed地址的解析,再得到解析后的第一篇文章

if ( $rss = fetch_rss( $url ) ) {
$item = (array) $rss-&gt;items[0]; 

扩展:

本例的“超级链接”只显示了每个链接的最新一篇文章

$item = (array) $rss-&gt;items[0];以下是显示5篇文章的例子,并对常用的参数作了说明
$rss = fetch_rss($url);
if ( $rss ) {
$rss-&gt;items = array_slice($rss-&gt;items, 0, 5);
foreach ( (array) $rss-&gt;items as $item ) {
echo $item['title']; //文章标题
echo $item['link']; // 文章原文链接
echo $item['pubDate'];//文章发布日期
echo $item['description']; //文章摘要
}
}

另外还可以显示的内容有:
author——文章的作者
category——文章分类
comments——注解、评论

本文就写到这里,至于显示的样式,那是CSS的事情,不在本文讨论的范围。
最后再次感慨一下开源的力量,非常强大。
(来源:http://domety.com/archives/188/)

为WordPress添加RSS阅读功能:等您坐沙发呢!

发表评论

您必须 [ 登录 ] 才能发表留言!