首页 > 技术点滴 > wordpress 自定义rss摘要输出到more标签

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

2009年6月16日 baoz 阅读评论 690 views

WP2.7之后的RSS摘要输出就有问题,刚才搜了一把,用方法2解决了这个问题,可能是我的原因,方法1无效。下文都是转载的,感谢作者。

原文在http://daozhao.goflytoday.com/2009/06/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的文件修改。对于其他版本请自己找相应的地方

包子猜您可能还喜欢下列文章:

  1. WordPress 输出带格式的 RSS Feed ZZ from sbilly
  2. zz 关于类似于电信弹出广告(push业务),使用ROS与简单web服务器实现
  3. 批量挂马和批量清马程序
  4. WordPress <= 2.8.3 Remote admin reset password
  5. linux下审计web http login form口令强度的工具

分类: 技术点滴 标签:
  1. 本文目前尚无任何评论.