减少插件中的RSS缓存时间?

时间:2011-01-08 作者:agileapricot

我想减少我制作的输出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;
  }

2 个回复
最合适的回答,由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;
}

SO网友:Chris_O

临时缓存提要的默认生存时间为12小时。可以通过挂接到wp\\u feed\\u cache\\u transient\\u lifetime过滤器来更改它

这将更改源缓存,使其每10分钟更新一次:

add_filter( \'wp_feed_cache_transient_lifetime\', 
             create_function(\'$a\', \'return 600;\') );
此外,您复制和粘贴的代码也非常过时。它包含不推荐使用的函数,并且没有利用Widgets API。fetch_rss 被替换为fetch_feed. wp_specialchars() 被替换为esc_html() ->;看见WP Hackers Discussion.

这个Widgets API 有很好的文档记录,只需稍作修改,您的代码就可以利用这些新特性。

结束

相关推荐