WordPress 通过 fetch_feed 函数调用外站订阅源文章
WordPress 2.8 就新增了 fetch_feed 函数,就可以通过该函数直接调用外站 Feed 订阅…
WordPress 2.8 就新增了 fetch_feed 函数,就可以通过该函数直接调用外站 Feed 订阅源内容,子凡也曾分享过“WordPress 通过 FEED RSS 调用其它站点的最新文章列表”则是 SimplePie 和 FeedCache 功能进行检索和解析以及自动缓存,而自 WordPress 4.7.0 版本起,已不建议使用 class-feed.php,需要换用 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 函数,而是继续使用了之前的方式方法,当然这里子凡不使用,只是个人单纯的偏执罢了,之所以把功能和代码分析出来,也是希望可以给大家一个更多的解决方法,多一个选择有什么不好呢?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!