今天花点时间给网站的feed输出加入了版权信息和相关文章的模块,如果你是通过RSS阅读此文的话,应该会在文章的底部看到版权信息以及相关文章。本文就来分享一下实现方法。
the_content 和 the_excerpt_rss
其实实现原理很简单,只要改变一下feed输出的内容即可。基于wordpress强大的filter和action机制,我们可以很轻松的就能改变feed输出的内容,我使用的就是the_content和the_excerpt_rss这两个filter。
the_content filter的作用是过滤文章的内容(包括网站里的正文内容以及feed输出的全文内容,因为它们都调用了the_content()函数),因为我只想更改feed的输出内容,所以在使用the_content filter的时候需要作一个判断,判断当前是否为feed输出。如果你的wordpress版本在2.9以上,可以直接使用the_content_feed filter,它只过滤feed输出的内容,因此不需要再次判断是否为feed输出。考虑到兼容问题,本文使用the_content为例。
the_excerpt_rss filter的作用是过滤feed输出的摘要内容。
实现方法
有了上面的分析,我们只需要调用add_filter函数来对输出内容进行过滤即可。下面以在文章内容的后面添加版权信息为例。
首页我们定义一个函数dm_addto_content_feed,其作用是向feed输出的内容后面再加入一段信息
function dm_addto_content_feed($content = '') {
if(is_feed()){ //判断是否为feed
// 以下为版权信息,你可以根据你的需求自行更改
$copyright = '<li><a href="http://creativecommons.org/licenses/by/3.0/deed.zh">版权声明</a>: 转载时请以超链接形式标明文章原始出处和作者信息</li>';
$copyright .= '<li>本文来自: <a href="'.get_bloginfo('url').'">'.get_bloginfo('name').'</a>»<a href="'.get_permalink().'">《'.get_the_title().'》</a></li>';
$copyright .= '<li>本文链接: <a href="'.get_permalink().'" title="'.get_the_title().'">'.get_permalink().'</a></li>';
$copyright .= '<li>本文作者: <a href="'.get_the_author_meta('url').'">'.get_the_author().'</a></li>';
$copyright .= '<li>发表时期: '.get_the_time('F jS,Y').'</li>';
$copyright .= '<li>'.get_the_tag_list('关键字: ').'</li>';
$copyfight = '<ul style="color:#808080;padding:10px;border:1px solid #D7D7D7;">'.$copyright.'</ul>';
// 以下为相关文章的调用
$related = '';
if(function_exists(dm_get_related_posts)){
$related .= '<h2>相关文章</h2>';
$related .= dm_get_related_posts('showposts=5');
}
// 把版权信息和相关文章模块添加到文章内容之后
$content .= $copyright.$related;
}
return $content; // 返回更改后的内容
}
然后调用add_filter回调上面定义的dm_addto_content_feed函数
add_filter('the_content','dm_addto_content_feed');
add_filter('the_excerpt_rss','dm_addto_content_feed');
把以上的代码添加到functions.php文件中就行了,至于相关文章函数的实现方法,你可以自己定义,也可以参看我在之前的文章中介绍过的方法。
卢松松
2009-12-29 星期二 22:55
DDBug
2009-12-29 星期二 23:03
万戈
2009-12-30 星期三 08:54
阿邙
2010-06-29 星期二 06:21
vsweb
2009-12-30 星期三 14:32
DDBug
2009-12-30 星期三 17:36