wordpress 自定义rss摘要输出-输出到more标签
今天搞wordpress的rss输出,原本并没有关心是rss输出的。不过最近托管左rss输出到feedsky。开始使用全文输出的。不过发觉全文输出的话,图片比较多,如果读者对文章表示太感兴趣的话会load得比较慢,所以想改成摘要输出。谁知道wordpress的摘要输出实在太差了,去除全部的html和图片。非常不美观。我希望rss的摘要输出和我首页的摘要输出是一样的。我首页是使用<!–more–>标签来定义摘要输出的。但是rss并不会自动摘要到more标签。
在网上搜索一些,原来wordpress的旧版本的全文输出是会自动截取到more标签的。不知到从那个版本开始rss的全文输出不在截取more标签了。反正现在我这个2.7就不会了。在管理界面也找不到设置。一时间也找不到相关插件。只好研读代码找解决方案。
重要找到解决方案了。
第一个方法:
打开在wp-includes目录下的feed-rss2.php文件修改两个地方。
第一个是在文件的第9行加上global $more;
8 9 10 | header('Content-Type: text/xml; charset=' . get_option('blog_charset'), true);
global $more;
$more = 1; |
第二个地方时在文件的第50行增加一个$more=0; 改成下边这样。
49 50 51 52 53 | <?php if ( strlen( $post->post_content ) > 0 ) : ?> <content:encoded><![CDATA[<?php $more = 0; echo the_content(); ?>]]></content:encoded> <?php else : ?> <content:encoded><![CDATA[<?php the_excerpt_rss() ?>]]></content:encoded> <?php endif; ?> |
第二个方法:
打开在wp-includes目录下的query.php文件function setup_postdata($post) 函数内修改2665行。
if ( is_single() || is_page() || is_feed() )
改成
if ( is_single() || is_page() )
结果如下:
2663 2664 2665 2666 2667 | if ( !$page ) $page = 1; if ( is_single() || is_page() ) $more = 1; $content = $post->post_content; |
上述方法是针对wordpress 2.7.1的文件修改。对于其他版本请自己找相应的地方。







啊,搞定了,谢谢~~~很有效的方法。
也在想这个问题.因为文章图片很多,如果rss全文查看的话会很卡.
我根据第一个方法修改了文件.
但是我在发布文章的时候怎样加这个呢?
我在文章中直接加上,但是更新以后,文章把这个东西自动又删除了
谢谢….