WP REST API: filtruj według kategorii 1 ORAZ kategorii 2

12

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[]=50powraca w kategorii ID 45 LUB 50 - jak mogę uzyskać posty w 45 ORAZ 50?

Z góry dziękuję.

Jesse P. Francis
źródło
Czy znalazłeś rozwiązanie tego problemu?
Corey,
@Corey: Nopes. Chyba nie jest możliwe, na razie (widziałem kilka innych postów na temat obsługi wtyczek twierdzących, że) Używałem API dla aplikacji z Ionic, ładowałem je osobno i zamiast tego przecinałem. Pozostawiając to otwarte, na wypadek, gdyby moje uczenie się było niepełne. Czytałem gdzieś, gdzie edytowana jest wtyczka (wcale nie jest zalecana), aby ją osiągnąć.
Jesse P Francis

Odpowiedzi:

6

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

Manish Jung Thapa
źródło
Wniosek dotyczy wyszukiwania AND, to da ci LUB.
Tom Woodward,
6

@Jesse patrz: WP-API / WP-API # 2990

Od wersji WP 4.7 filterzostał usunięty z WP-API.

Musisz użyć tej wtyczki: https://github.com/WP-API/rest-filter

Austin Passy
źródło
1
Alternatywna wtyczka github.com/bueltge/wp-rest-api-filter-items, które mają test na solidną konserwację, obejmują.
bueltge
@bueltge, ciekawe. Obecnie używam wtyczki rest-api-filter-fields : github.com/svrooij/rest-api-filter-fields , która wydaje się robić to samo.
Austin Passy
1

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

Jamie Halvorson
źródło
Nie wydaje się działać! :)
Jesse P Francis
1

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 %2Bjest to kodowy odpowiednik tego +symbolu.

Zwykle +używalibyśmy operatora AND, ale niestety jest on konwertowany na spację, więc użyj %2Bzamiast tego.

Louis S.
źródło
1

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

Szczery
źródło
0

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
Thavaprakash Swaminathan
źródło
-1

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
Vahid Sabet
źródło
To jest interfejs API REST WooCommerce dla produktów i kategorii produktów. Pytanie dotyczyło postów i kategorii postów z interfejsem API REST WordPress.
Jacob Peattie