WordPress首页摘要输出而RSS全文输出的解决方案
从一开始,我的 blog 就采用首页输出文章摘要而 RSS feed 输出全文的办法。由于文章的长短参差不齐,贴有代码的文章会显得很长,而且还有很多文章中插有图片和视频,所以如果首页输出全文,会影响页面的整体美观和载入速度。但是在 RSS 中,我认为应该输出全文,否则读者阅读起来不是很方便。
我们从 WordPress 的输出设置中可以了解,在文章中使用 <!–more–> 标记能够把首页显示的文章截断,达到输出摘要的目的,但是这样做会把 RSS 的文章也给截断,这样就不能达到两者兼顾的目的了。
之前我一直使用中文 WordPress 工具箱这个插件来实现截断首页文章的效果,它不会把 RSS 的输出截断。其实这个功能就是调用了 WordPress 本身的一个函数,但是它有一个缺点就是会过滤掉所有的超文本标记,比如标题、链接、图片等,造成的结果就是首页显示的摘要完全是纯文本的,而且如果文章很短,在首页可以完全显示,后面还会是多一个“继续阅读其他部分”。所以还是不用 wp 自带的摘要功能了,重新找一个办法。
经过查找,终于找到了这个问题的解决方法如下:
打开 wp-includes/post-template.php ,找到这段代码:
$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);
}
只需要修改第一行就可以了,把
改为
即可。其实就是多加了一个判断条件,如果不是 feed 则截断文章。
现在,就可以使用<!–more–> 标记来截断首页的文章而不会影响到 feed 的全文输出了,而且在首页中文章的样式也全部被保留了下来。如果你用了这个方法,注意在以后 WordPress 升级的时候如果更新了 post-template.php 这个文件,还要再修改一下。
Update:可以使用 Full Text Feed 插件实现同样的功能。
16 条评论(我有话要说)
2 Pingbacks & Trackbacks
-
Dreaming!--Crazy Ben's Blog. » Blog Archive » WP首页摘要输出而RSS全文输出的解决方案 Pingback @2007-09-18 14:24
[...] 在网上乱游荡,发现这个不错,马上去试验一下!下面全文引用,来自于 许许如生。 [...]
-
收拾起大地山河一担装 Trackback @2008-04-22 09:52
解决问题:首页文章截断,feed输出全文…
解决了一个问题。之前因为首页显示文章必须截断,以保证载入速度,feed输出时遇到<!–more–>也会截断。现在已经解决,feed可以输出全文了。办法见这里。
Related PostsNo related posts….
我也一直用这个办法很方便。
说的很好,我也想试试
先收藏,有空再弄,今天刚换了空间…
我博客上也提供了一个办法,呵呵~
好办法
你这个方法是在多少字的地方截断的呢?为什么我按你写的修改后并不见效果呢?能指导我一下吗?谢谢。
@Jarod 这个方法没有截断文章。加了一个判断的条件,不是 feed 的情况下才会截断文章。
用你的代码修改了一下,结果发现出错了,老提示105行有错误,搞了好久才发现你的代码是有问题滴。!is_feed()前面那两个符号“&&”似乎被换成HTML代码了,变成了“&amp;&amp;”,改成“&&”后才正常了。看来C语言没白学啊!哈哈.
再看看下面引用的文章,连接死了,搜一下出来发现他的才是对的。
@kouz 不好意思,这篇我重新编辑过,是coolcode的问题,直接把&&给转义了,谢谢提醒!
不错,去试试
如果rss输出摘要, 想输出图片但却不想用插件, 该怎么做呢?
我没有看懂你的意思,能不能说的详细一点?
为什么我这样改了还不行额~~
google reader里还是纯文本的摘要啊~~
我看了一下你的feed,的确有问题
而且http://www.chunaove.cn/feed这个feed竟然没有什么输出,很奇怪