我想减少我制作的输出RSS提要的小部件插件的默认RSS缓存时间。我不是php专家,我只是复制、粘贴并理解一些细节。我正在使用此代码输出RSS
function widget($args, $instance) {
// outputs the content of the widget
extract( $args );
$title = apply_filters(\'widget_title\', $instance[\'title\']);
$tip_language = apply_filters(\'widget_title\', $instance[\'tip_language\']);
echo $before_widget;
echo "<h3 class=\\"widgettitle\\">" . $title . "</h3>";
include_once(ABSPATH . WPINC . \'/rss.php\');
$rss_feed = "http://mysite.org/feed";
$rss = fetch_rss($rss_feed);
$rss->items = array_slice($rss->items, 0, 1);
$channel = $rss->channel;
foreach ($rss->items as $item ) {
$parsed_url = parse_url(wp_filter_kses($item[\'link\']));
echo wptexturize($item[\'description\']);
echo "<p><a href=" . wp_filter_kses($item[\'link\']) . ">" . wptexturize(wp_specialchars($item[\'author\'])) . "</a></p>";
}
echo $before_after;
}
最合适的回答,由SO网友:Rarst 整理而成
为什么不直接使用本机RSS小部件?
此外,虽然Chris\\u O完全正确地使用了过滤器,但更好的做法是更改特定提要URL的缓存时间,而不是全局更改:
add_filter( \'wp_feed_cache_transient_lifetime\', \'speed_up_feed\', 10, 2 );
function speed_up_feed( $interval, $url ) {
if( \'http://mysite.org/feed\' == $url )
return 3600;
return $interval;
}