WordPress 通过 fetch_feed 函数调用外站订阅源文章

leixue WordPress建站 2018-12-10 09:43:33 阅读(...) 评论(1)

WordPress 2.8 就新增了 fetch_feed 函数,就可以通过该函数直接调用外站 Feed 订阅源内容,子凡也曾分享过“WordPress 通过 FEED RSS 调用其它站点的最新文章列表”则是 SimplePie 和 FeedCache 功能进行检索和解析以及自动缓存,而自 WordPress 4.7.0 版本起,已不建议使用 class-feed.php,需要换用 fetch_feed()。

WordPress fetch_feed

上周子凡在进行站点做 PHP7.2 的兼容测试,顺便开启了 WordPress debug,所以也就出现了“Notice: 自 4.7.0 版本起,已不建议使用 class-feed.php,请换用 fetch_feed()。”的提示,于是就稍微了解了一下 fetch_feed()函数,原来也只是封装了一下 SimplePie 而已,并且将缓存以 _transient 的形式存入的数据库,默认的缓存时间为 12 小时,更重要的是无法直接通过 fetch_feed 函数自定义这些参数,除了能够定义 feed 源,基本就没有什么可操作性了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// WordPress 通过 fetch_feed 函数调用外站订阅源文章
include_once( ABSPATH . WPINC . '/feed.php' );
$feedurl = array(
	'https://www.tearsnow.com/news/feed',
	'https://zhangzifan.com/feed',
);
$rss = fetch_feed( $feedurl );
$maxitems = 0;
if ( ! is_wp_error( $rss ) ) :
	$maxitems = $rss->get_item_quantity( 5 ); //数量
	$rss_items = $rss->get_items( 0, $maxitems );//从 0 开始
endif;
 
if ( $maxitems == 0 ) :
	echo '<li>没有内容</li>';
else :
	foreach ( $rss_items as $item ) :
		echo '<li><a target="_blank" href="'.esc_url( $item->get_permalink() ).'">'.esc_html( $item->get_title() ).'</a></li>';
	endforeach;
endif;

看完代码,再对比之前子凡分享过的文章“WordPress 通过 FEED RSS 调用其它站点的最新文章列表”,虽然实现了同样的功能,并且也保证了 WordPress 的最新标准,但是子凡作为一个力求极致的人,并不希望将这些数据缓存写入数据库,因为写入数据库的 _transient 虽然会被清除再次缓存,但是我依旧认为没有直接写入硬盘作为缓存来得更实在,并且 fetch_feed 函数无法自定义,导致了非常多的局限性。

所以子凡最终还是没有直接使用 fetch_feed 函数,而是继续使用了之前的方式方法,当然这里子凡不使用,只是个人单纯的偏执罢了,之所以把功能和代码分析出来,也是希望可以给大家一个更多的解决方法,多一个选择有什么不好呢?

除非注明,否则均为泪雪博客原创文章,禁止任何形式转载

本文链接:https://zhangzifan.com/wordpress-fetch_feed.html

发表评论

  1. 缙哥哥
    1楼
    缙哥哥 5个月前 (01-10)

    这个得收藏,貌似用的上!