一直都没怎么留意自己的Feed输出,经常在WordPress后台的Option 中看到“Note: If you use the <!–more–> feature, it will cut off posts in RSS feeds.”这句话,不过没在意所以也一直不知道输出的Feed会被Cut Off成什么样子。看了一下习惯订阅Feed的朋友们的讨论,普遍都喜欢Feed全文输出(我个人却喜欢摘要输出,因为感觉那样更加容易比较快的判断那一篇是自己想看的),读者就是上帝,所以当然是迎合大众的口味,设置成为全文输出了。结果却令我大吃一惊,输出的依然是摘要,然后看后台设置的时候才开始注意这句话,Google了一下解决方案,发现普遍的做法都是用插件的方法来解决,或者修改显示全文的代码(the_content())和显示摘要的代码(the_excerpt())这两个函数,插件会影响速度,并且会带来副作用,这个我向来不喜欢,后者修改的地方太多了,升级比较麻烦,有没有更加简单一点的方法呢?
大致浏览了一下WordPress代码,发现输出功能是在wp-includes/post-template.php中实现的,其中有这么一段:
if ( preg_match(‘/<!–more(.*?)?–>/’, $content, $matches) ) {$content = explode($matches[0], $content, 2);if ( !empty($matches[1]) && !empty($more_link_text) )$more_link_text = strip_tags(wp_kses_no_null(trim($matches[1])));} else {$content = array($content);}
其中第一句判断语句就是判断增加的more标记,带有more的话就进行截断,否则全文输出,另外找到了是否feed输出的判断函数(WordPress构架还是挺不错的,代码读起来非常省力气)is_feed,所以对于第一句话可以做这样修改:
if ( preg_match(‘/<!–more(.*?)?–>/’, $content, $matches)&&!is_feed() )
增加了是否Feed输出的判断,这样feed输出的时候就会跳到else的处理中,进行全文输出。当然,升级的时候这个修改还是需要的,假如升级版本没有对此进行修改得话,:),记住这个修改,也是发表本文的目的之一。如果你连这个都懒得修改,那可以从这里下载修改后的版本,直接替换原来的post-template.php文件。
Related Post
5 Responses to “Wordpress的首页摘要显示而Feed全文输出的简单解决方案”
Trackbacks
- 全文检索博客 » 如何在Feed中自动输出原文链接(Permalink)
- YangTx 仰天啸 » Blog Archive » 首页摘要显示Feed全文输出
- 显示摘要和阅读全文解决方案 | 蓝色聚焦

June 2nd, 2008 at 9:47 pm
似乎WordPress 2.5以后不需要这个插件了?我今天尝试从2.3升级到2.5,可惜因网路问题导致失败,还是停留在2.3,Heyi正在找这个“Full text Feed”。
June 2nd, 2008 at 9:55 pm
现在我的就是WordPress 2.5的,倒没留意过后台是否有这个功能,升级的时候我还是修改了这块代码。