API响应设计为仅返回ID。然后,您可以获取每个术语的完整信息。当然,提出几十个请求并不是很有效。因此,RESTAPI具有嵌入资源的概念。
如果您提出请求,但包括_embed=1
在您的URL中,WordPress将为您的每个学期发出这些请求。因此,例如,在获取帖子时,您将看到以下响应正文。
{
"categories": [
1
],
"tags": [],
"_embedded": {
"wp:term": [
[
{
"id": 1,
"link": "https:\\/\\/app.test\\/category\\/uncategorized\\/",
"name": "Uncategorized",
"slug": "uncategorized",
"taxonomy": "category",
}
]
]
}
}
来自任何分类法(包括自定义分类法)的术语将包含在
_embedded[wp:term]
大堆这也适用于自定义post类型端点。
不幸的是,您必须手动遍历该数组,以找到每个ID的嵌入项sub_brand
, service_area
和location
. 我建议首先遍历所有术语,然后构建一个由每个术语的ID设置关键字的对象,以获得更好的性能。
const termObjects = {};
for ( const taxonomyTerms of response._embedded[ \'wp:term\' ] ) {
for ( const term of taxonomyTerms ) {
termObjects[ term.id ] = term;
}
}
function getTerms( taxonomy, response, termObjects ) {
const terms = [];
for ( const termId of response[ taxonomy ] ) {
terms.push( termObjects[ termId ] );
}
return terms;
}
const locations = getTerms( \'location\', response, termObjects );