东南亚廉价航空查询与比价网站
首页 > 编程 > wordpress 自定义rss摘要输出-输出到more标签

wordpress 自定义rss摘要输出-输出到more标签

2009年6月5日

今天搞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的文件修改。对于其他版本请自己找相应的地方。

Bookmark and Share

编程

  1. 2009年7月23日10:33 | #1

    啊,搞定了,谢谢~~~很有效的方法。

  2. 2009年7月22日17:24 | #2
  3. 2009年7月22日17:17 | #3

    也在想这个问题.因为文章图片很多,如果rss全文查看的话会很卡.

    我根据第一个方法修改了文件.
    但是我在发布文章的时候怎样加这个呢?
    我在文章中直接加上,但是更新以后,文章把这个东西自动又删除了

    谢谢….

  1. 本文目前尚无任何 trackbacks 和 pingbacks.