Вы пытаетесь отфильтровать свой тип поста по значению таксономического термина? Например, у вас есть тип записи "book" и таксономия "book_cat", и вы хотите получить всю книгу из определенного book_cat, верно?
Фильтр поддержки WP REST API по идентификаторам терминов таксономии изначально.
Вы можете сделать запрос GET вот так
https://example.com/wp-json/wp/v2/book?book_cat=20
Если вам нужно выбрать более одного термина, разделите их запятой.
https://example.com/wp-json/wp/v2/book?book_cat=20,21,22
(https://example.com/wp-json/wp/v2/<post_type>?<taxonomy_name>=<term_id>,<term_id>
)
вот и все
edit: на самом деле вы не можете фильтровать тип поста по термину slug, вам нужно использовать id
Если вам нужно получить term_id по term_slug, вы можете сделать следующее:
$term = get_term_by('slug', 'my-term-slug', 'my_taxonomy')
$term_id = $term->term_id;
Вы можете использовать пользовательский фильтр, чтобы использовать термин slug в качестве параметра
Если вам действительно нужно использовать slug в качестве URL Параметр, вы можете добавить пользовательский фильтр, посмотрите rest _ {$ this-> post_type} _query hook
Вы можете сделать что-то подобное:
/**
* Filter book post type by book_cat slug
*
* @param array $args
* @param WP_Rest_Request $request
* @return array $args
*/
function filter_rest_book_query( $args, $request ) {
$params = $request->get_params();
if(isset($params['book_cat_slug'])){
$args['tax_query'] = array(
array(
'taxonomy' => 'book_cat',
'field' => 'slug',
'terms' => explode(',', $params['book_cat_slug'])
)
);
}
return $args;
}
// add the filter
add_filter( "rest_book_query", 'filter_rest_book_query', 10, 2 );
а затем
https://example.com/wp-json/wp/v2/book?book_cat_slug=slug01,slug02