我的建议是为fetch_feed()
. 通过WordPress的cron调用包装器函数,您不应该有问题。
比如:
function schedule_fetch_feeds() {
if ( ! wp_next_scheduled( \'cron_fetch\' ) ) {
wp_schedule_event( time(), \'hourly\', \'cron_fetch\', \'http://blog1.url/feed\' );
wp_schedule_event( time(), \'hourly\', \'cron_fetch\', \'http://blog2.url/feed\' );
}
}
function fetch_feed_on_cron( $url ) {
$feed = fetch_feed( $url );
delete_transient( "feed-" . $url );
set_transient( "feed-" . $url, $feed, 60*60 );
}
add_action( \'wp\', \'schedule_fetch_feeds\' );
add_action( \'cron_fetch\', \'fetch_feed_on_cron\', 10, 1 );
记住,我还没有机会测试这个但是它应该创建cron作业来抓取每个feed并临时存储feed。瞬态有1小时的过期时间,因为cron实际上应该每小时更新一次。
您可以使用以下方法从瞬态中提取馈电:
function get_cached_feed( $url ) {
$feed = get_transient( "feed-" . $url );
if ( $feed ) return $feed;
$feed = fetch_feed ( $url );
set_transient( "feed-" . $url, $feed, 60*60 );
return $feed;
}
如果瞬态存在,函数将获取它并返回它。如果没有,函数将手动获取它,缓存它,然后仍然返回它。