正如PieterGoosen所说,当您第一次请求任何元数据时,一篇文章的所有元数据都会被缓存。
对于任何调用WP_Query
. 你一打电话WP_Query
, WordPress在一个查询中获取所有检索到的帖子的元数据。
最坏的情况是你打电话get_post_meta
用于WordPress之前未检索到的单个帖子ID。在这种情况下,每次调用get_post_meta
将生成一个查询。
从查询到的示例跟踪wp_postmeta
内部aWP_Query
:
SELECT post_id, meta_key, meta_value
FROM wp_postmeta
WHERE post_id IN (491,347)
ORDER BY meta_id ASC
#0 /wp-includes/wp-db.php(1567): wpdb->_do_query(\'SELECT post_id,...\')
#1 /wp-includes/wp-db.php(1958): wpdb->query(\'SELECT post_id,...\')
#2 /wp-includes/meta.php(814): wpdb->get_results(\'SELECT post_id,...\', \'ARRAY_A\')
#3 /wp-includes/post.php(5546): update_meta_cache(\'post\', Array)
#4 /wp-includes/post.php(5529): update_postmeta_cache(Array)
#5 /wp-includes/query.php(3614): update_post_caches(Array, \'post\', true, true)
#6 /wp-includes/query.php(3836): WP_Query->get_posts()
#7 /wp-includes/query.php(3946): WP_Query->query(Array)
#8 /wp-content/plugins/***/***.php(134): WP_Query->__construct(Array)
如您所见,调用源自
get_posts
并检索2篇文章的元数据,这是原始
WP_Query
.