Фильтровать WP REST API по значению таксономии (значение1, значение2, значение3 и т. Д. c ...) - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь отфильтровать мою таксономию типа Пользовательский пост по значениям, но я не добился успеха.

Я подумал, знает ли кто-нибудь еще, как вам go сделать это, или, может быть, я здесь не так?

Спасибо

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Вы пытаетесь отфильтровать свой тип поста по значению таксономического термина? Например, у вас есть тип записи "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
0 голосов
/ 29 апреля 2020

Вы можете передать tax_query в своем почтовом запросе следующим образом:

$tax_query[] =  array(
'taxonomy' => 'product_cat',
'field' => 'tag_ID', // Filter by Texonomy field name tag_ID
'terms' => $termID, // your texonomy by which you want to filter
);
$args = array(
    'post_type'     => 'product',
    'post_status'   => 'publish',
    'tax_query'     => $tax_query,
);

$loop = new WP_Query($args);

Также вы можете фильтровать по слагу таксономии: -

$tax_query[] =  array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => $slugID

);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...