今天花点时间给网站的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>&raquo;<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文件中就行了,至于相关文章函数的实现方法,你可以自己定义,也可以参看我在之前的文章中介绍过的方法。

添加评论

6 条评论

  1. 1 F

    卢松松

    2009-12-29 星期二 22:55

    可以加一个feed优化插件呀

    回复
    • DDBug

      2009-12-29 星期二 23:03

      你这回复速度也太快了吧,我刚发布的。
      目前还没考虑用插件,你推荐我一个feed优化的插件吧,我看一下都有哪些功能

      回复
  2. 2 F

    万戈

    2009-12-30 星期三 08:54

    恩,我现在用的就是这个方法~

    回复
  3. 3 F

    vsweb

    2009-12-30 星期三 14:32

    超级链接里的网站图片 怎么弄上去的

    回复
    • DDBug

      2009-12-30 星期三 17:36

      调用你网站根目录下的favicon.ico图标
      你的图标里应该是只有16*16的图标吧,如果包含32*32的就显示32*32的图标

      回复

添加评论