今天搞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;

header('Content-Type: text/xml; charset=' . get_option('blog_charset'), true);
global $more;
$more = 1;

第二个地方时在文件的第50行增加一个$more=0; 改成下边这样。

        post_content ) > 0 ) : ?>
                ]]>
        
                ]]>
        

第二个方法: 打开在wp-includes目录下的query.php文件function setup_postdata($post) 函数内修改2665行。 if ( is_single() || is_page() || is_feed() ) 改成 if ( is_single() || is_page() ) 结果如下:

	if ( !$page )
		$page = 1;
	if ( is_single() || is_page() )
		$more = 1;
	$content = $post->post_content;

上述方法是针对wordpress 2.7.1的文件修改。对于其他版本请自己找相应的地方。