Wtrącam się w interfejs API REST i utknąłem z tym: Jak mogę filtrować posty zarówno w cat1, jak i cat2?
Na razie ?categories[]=45&categories[]=50
powraca w kategorii ID 45 LUB 50 - jak mogę uzyskać posty w 45 ORAZ 50?
Z góry dziękuję.
Wtrącam się w interfejs API REST i utknąłem z tym: Jak mogę filtrować posty zarówno w cat1, jak i cat2?
Na razie ?categories[]=45&categories[]=50
powraca w kategorii ID 45 LUB 50 - jak mogę uzyskać posty w 45 ORAZ 50?
Z góry dziękuję.
Odpowiedzi:
Wiele kategorii można oddzielić przecinkami, jak poniżej
http://example.com/wp-json/wp/v2/posts?categories=20,30
mam nadzieję że to pomoże
@Jesse patrz: WP-API / WP-API # 2990
Od wersji WP 4.7 filter
został usunięty z WP-API.
Musisz użyć tej wtyczki: https://github.com/WP-API/rest-filter
Powinieneś być w stanie uzyskać dostęp do wielu kategorii za pomocą następujących czynności:
http://YOURSITE.DEV/wp-json/wp/v2/posts?categories=45+50
Mam nadzieję, że to pomaga!
Twoje zdrowie
Zainstaluj wymienioną wtyczkę filtra Austin ( https://github.com/WP-API/rest-filter ) i spróbuj ?filter[categories]=cat_one_slug%2Bcat_two_slug
.
Dowiedziałem się, że %2B
jest to kodowy odpowiednik tego +
symbolu.
Zwykle +
używalibyśmy operatora AND, ale niestety jest on konwertowany na spację, więc użyj %2B
zamiast tego.
Wydaje się, że nie ma sposobu, aby to zrobić w bieżącej wersji interfejsu API. Bez użycia wtyczki można to osiągnąć za pomocą niestandardowego punktu końcowego lub za pomocą funkcji filtru zapytań pozostałych dla określonego typu postu.
Oto funkcja filtra wstępnego, która dodaje parametr o nazwie cat_relation
:
add_filter( 'rest_post_query', function( $args, $request ) {
if($request['cat_relation'] == 'AND') {
$args['category__and'] = $request['categories'];
}
return $args;
}, 10, 2);
Przykładowy adres URL żądania to:
http://example.com/wp-json/wp/v2/posts?categories=17,8&cat_relation=AND
To właśnie zrobiłem. Działa dobrze.
http://example.com/wp-json/wp/v2/articles/?_embed&categories=1,2,3,4&per_page=30
Dla tych, którzy używają Rest API v3, to działa dla mnie:
http://example.com/wp-json/wc/v3/products/?category=42,43