如何强制WP_QUERY获取新鲜的、未缓存的结果?

时间:2017-07-10 作者:Nicholas Cardot

Context: 在我开发的社交共享插件中,我将社交共享计数存储在隐藏的post meta(自定义字段)中,以便我可以将该数据用于插件的各种功能。

该数据的一个有用用途是创建一个流行的帖子小部件,该小部件基于帖子拥有的社交共享数量。我使用带有以下参数的查询来完成此操作:

Example Code:

        $swp_args = array(
            \'posts_per_page\'    => $count,
            \'post_type\'         => \'post\',
            \'meta_key\'          => \'_\' . $network,
            \'orderby\'           => \'meta_value_num\',
            \'order\'             => \'DESC\',
        );
        $swq = new WP_Query( $swp_args );
其中,$count是一个有效的整数,$network是与特定社交网络的共享计数相关联的元字段之一的有效名称,或者是反映所有网络的总共享的\\u totes字段。

The Problem: 在99%的网站上,这个查询运行速度很快,人们认为这只是蜜蜂的膝盖。然而,在少数几个网站上,我发现了一些不寻常的行为。在某些情况下,小部件似乎永远不会更新。例如,在帖子本身上,帖子将反映它有100个共享,但小部件将保持在80个共享,并继续按照80个共享进行排序。post和小部件都为这些功能使用了完全相同的元字段。

The Question: 什么会导致WP\\U查询继续返回过期数据?如果是某种缓存,是否有办法强制查询不被缓存,而是始终从数据库返回新数据?

1 个回复
SO网友:Den Isahac

WP_Query 有一个Caching Parameters 您可以配置为返回所需的数据,包括/不包括缓存。

$swp_args = array(
    // Show posts without adding post meta information to the cache.
    \'update_post_meta_cache\' => false,
    ...
);
在您的具体情况下update_post_meta_cache 允许您转弯on/off post meta的缓存。

结束

相关推荐

如何禁用MULTSITE下的W3 Total Cache“Performance”菜单?

我偶然发现了以下文章W3 Total Cache - How to disable “Performance” menu under multisite?然而,在使用最新版本的WordPress 3.7和W3 Total Cache v0对其进行测试时。9.3它似乎不再起作用。如何从上面的链接更新代码以使其正常工作我还有以下代码,它可以从管理顶栏中删除“性能”//Remove Performance function ds_w3tc_remove_adminbar() { globa