私は キャッシュパラメータ について学び、single.php
テンプレートでこれを試しました:
echo count($wp_object_cache->cache['posts']);
$query = new \WP_Query([
'post_type' => 'post',
'cache_results' => false,
'posts_per_page' => 5,
'ignore_sticky_posts' => true
]);
echo '<br>' . count($wp_object_cache->cache['posts']);
結果:
3
7
どういうわけか、cache_results
パラメータは機能しませんでした。私は何かが足りないのですか?
私が使っている:
WP_Query
のposts配列の結果はget_post()
( ここ と ここ にマッピングされます。 ):
$this->posts = array_map( 'get_post', $this->posts );
cache_results
でWP_Query
引数がfalse
に設定されていても、オブジェクトキャッシュに投稿が追加されているようです。
get_post()
関数( ここ )には、
$_post = WP_Post::get_instance( $post );
$post
がWP_Post
でもオブジェクトインスタンスでもない場合。
WP_Post::get_instance
メソッド には、wp_cache_get()
およびwp_cache_set()
呼び出しが含まれています。
それであなたの例で見ている振る舞いを説明できるでしょう。