在WordPress Feeds生成中禁用缓存

时间:2013-08-21 16:03:50

标签: wordpress

我正在开发一个插件,它会在Feed中添加另一个参数,我想在网址上添加一个numberOfItems,并且Feed会返回该数量的文章。我不想使用WP Admin的内置选项,因为Feed将添加到具有不同项目数的其他网站上,这有点复杂,关键是我需要这个实现。我添加了类似

的内容
function _my_custom_option( $option )
{
global $wp_query, $wp_rewrite;;
remove_filter( 'pre_option_posts_per_rss', '_my_custom_option' );
//$number = get_query_var('number');
$number = $wp_query->query_vars['numberOfItems'];

if(isset($number))
    $option = $number;
else
        $option = 10;
//$wp_rewrite->flush_rules();
add_filter( 'pre_option_posts_per_rss', '_my_custom_option' );
return $option;
}
add_filter( 'pre_option_posts_per_rss', '_my_custom_option' );

似乎Feed以某种方式缓存,并且不会生成项目数,因为当我添加paged = 2时,它可以正常工作。但是,如果我在页面上更改numberOfItems与另一个数字,它不会改变。另外,我在wp-includes> feed-rss2.php中添加了一些垃圾文本,以验证它是否缓存。并且在前2-3页刷新后它没有显示。

老实说,我被卡住了,我不知道如何处理这个问题,我查看了wordpress代码,我没看到缓存完成的位置。

1 个答案:

答案 0 :(得分:0)

这个怎么样?

 function do_not_cache_feeds(&$feed) {
     $feed->enable_cache(false);
 }

 add_action( 'wp_feed_options', 'do_not_cache_feeds' );