根据您的评论:
我只是想知道是否有一个核心端点用于列出具有相关post类型记录的自定义分类法。
正如我在最初的回答中所说的:(不过稍微修改了一下)
所讨论的端点是一个分类术语,它返回特定术语的数据(例如描述、名称和slug),但响应不包括该术语中的帖子,因为帖子有自己的端点(例如。/wp/v2/your_post_type?experiences=7
获取的帖子your_post_type
键入自定义experiences
ID为7的术语的分类法),但仅当post类型为enabled in the REST
API
因此,没有任何核心端点可以像常规术语归档页面那样开箱即用example.com/category/uncategorized
, example.com/?cat=1
或example.com/experiences/foo-bar
(其中experiences
是一个自定义分类法slug),默认情况下,它显示所有或任何post types与所请求术语的分类相关。
我希望我能从一个端点得到这个
在这种情况下,自定义端点可能会更好
是的,这是一种简单的方法,而不是对与您的分类法关联的不同post类型发出多个API请求,而且它还可以避免您可能需要进行复杂的JS编码来处理分页。
但实际上,你可以利用Search endpoint (/wp/v2/search
) 以及rest_post_search_query
filter 修改将传递给的搜索查询参数WP_Query
.
这意味着,就像您可以通过pre_get_posts
钩子,您还可以通过上述过滤器控制搜索端点查询。
因此您可以添加分类查询、元查询、,etc.
下面是一个你可以尝试的例子,你可以向/wp/v2/search?type=post&<taxonomy slug>=<term ID or slug>
, e、 g。/wp/v2/search?type=post&experiences=7
或/wp/v2/search?type=post&experiences=term-slug
.
Notes:
add_filter( \'rest_post_search_query\', \'my_rest_post_search_query\', 10, 2 );
function my_rest_post_search_query( $query_args, $request ) {
$tax_query = array();
$post_types = array();
$tax_objects = get_taxonomies( array(
\'publicly_queryable\' => true,
), \'objects\' );
foreach ( $tax_objects as $taxonomy => $tax_object ) {
if ( ! empty( $request[ $taxonomy ] ) ) {
$tax_query[] = array(
\'taxonomy\' => $taxonomy,
\'terms\' => $request[ $taxonomy ],
\'field\' => is_numeric( $request[ $taxonomy ] ) ? \'term_id\' : \'slug\',
);
$post_types = array_merge( $post_types, (array) $tax_object->object_type );
}
}
if ( ! empty( $tax_query ) ) {
$query_args[\'tax_query\'] = $tax_query;
$query_args[\'post_type\'] = $post_types;
}
return $query_args;
}