web-dev-qa-db-ja.com

照会された投稿がキャッシュに追加されないようにする方法

私は キャッシュパラメータ について学び、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パラメータは機能しませんでした。私は何かが足りないのですか?


私が使っている:

  • WordPressバージョン4.6.
  • 15のテーマ.
  • プラグイン/サードパーティサービスはありません。
2
MinhTri

WP_Queryのposts配列の結果はget_post()ここここ にマッピングされます。 ):

$this->posts = array_map( 'get_post', $this->posts );

cache_resultsWP_Query引数がfalseに設定されていても、オブジェクトキャッシュに投稿が追加されているようです。

get_post()関数( ここ )には、

$_post = WP_Post::get_instance( $post );

$postWP_Postでもオブジェクトインスタンスでもない場合。

WP_Post::get_instanceメソッド には、wp_cache_get()およびwp_cache_set()呼び出しが含まれています。

それであなたの例で見ている振る舞いを説明できるでしょう。

2
birgire