如何从同一查询返回post数据中的分类术语。
目前我正在调用get\\u posts/wp\\u query,然后循环调用wp\\u get\\u post\\u terms。不用说,它会破坏数据库并导致太多的查询。
在上下文中,我列出了所有WooCommerce产品(“产品”帖子类型),然后添加了“设计器”分类术语。
使用任何内置功能都可以做到这一点吗?
最合适的回答,由SO网友:Pieter Goosen 整理而成
您应该使用get_the_terms()
. wp_get_post_terms()
查询db以获取学期后信息,其中get_the_terms()
直接从后期缓存返回后期对象,仅在该信息不可用时查询数据库。
默认情况下,所有post的术语都由正在执行的查询缓存。
编辑我无法评论(蹩脚的移动设备),但没有原生方法可以在单个对象中返回包含各自的帖子术语和元数据的帖子对象。但是,当WP_Query
通过主查询执行,query_posts()
, get_posts()
或新实例WP_Query
, by default, WP_Query
返回中属于帖子的所有相关帖子术语和帖子元$posts
查询对象的属性。然而,这些post terms和post meta并不是作为post对象的一部分返回的,这些数据直接存储到它们的相对缓存中,即post term缓存和post meta缓存,在post terms的情况下,它们会一直保留在那里,直到通过以下函数进行查询get_the_terms()
. 设置这些缓存是为了避免进行额外的db调用以返回post/post术语和/或元数据。这意味着,无论你拨打1个或1000个电话get_the_terms()
, 你还是会zero db调用。
综上所述,当您认为要进行额外的db调用以返回术语后的数据时,实际上根本没有进行任何db调用,所有术语后的数据都是从术语缓存中返回的