我正在尝试使用WP Redis缓存整个$ wp_query对象,其键为$ query_vars_hash。
这是如何$wp_query
添加到$wp_object_cache
:
add_action('wp', function($wp)
{
if ( is_admin() ) return;
global $wp_query;
if ( !wp_cache_get($wp_query->query_vars_hash, 'globals') )
{
wp_cache_add($wp_query->query_vars_hash, $wp_query, 'globals');
}
});
然后,我需要先检查查询是否已缓存,然后WP_Query
才能检索帖子:
add_action('pre_get_posts', function($query)
{
if ( is_admin() ) return;
$cached_query = wp_cache_get($query->query_vars_hash, 'globals');
if ($cached_query)
{
$GLOBALS['wp_query'] = &$cached_query;
return; // Return immediately to prevent retrieving posts again.
}
});
问题:
return
或exit
在这种情况下不起作用。然后,WP_Query
仍然会命中数据库以再次检索帖子。
问题:
无论使用哪种插件,是否都可以完全停止WP_Query
检索帖子?
return
可能是我们在这种情况下可以调用的唯一命令。