WP REST API: filtrare per categoria 1 E categoria 2

6 gen 2017, 11:39:49
Visualizzazioni: 48.3K
Voti: 23

Ho armeggiato con la REST API e sono bloccato su questo punto: Come posso filtrare i post che sono sia in cat1 che in cat2?

Al momento, ?categories[]=45&categories[]=50 restituisce i post nella categoria ID 45 OPPURE 50 - come posso ottenere i post che sono sia in 45 CHE in 50?

Grazie in anticipo.

2
Commenti

Hai trovato una soluzione per questo?

Corey Corey
3 feb 2017 19:03:39

@Corey: No. Immagino non sia possibile, almeno per ora (ho visto altri post di supporto per plugin che lo affermano) Stavo usando l'API per un'app con Ionic, li ho caricati separatamente e intersecati invece. Lo lascio aperto, nel caso in cui la mia comprensione sia incompleta. Ho letto da qualche parte che il Plugin viene modificato (per nulla raccomandato) per ottenere questo risultato.

Jesse P Francis Jesse P Francis
5 feb 2017 17:17:40
Tutte le risposte alla domanda 8
1
15

Più categorie possono essere separate da una virgola come mostrato di seguito

http://example.com/wp-json/wp/v2/posts?categories=20,30

spero che questo sia utile

11 mag 2017 12:25:23
Commenti

La richiesta è per la ricerca AND, questo ti darà OR.

Tom Woodward Tom Woodward
9 set 2019 02:29:32
2

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

Da WP 4.7, il parametro filter è stato rimosso da WP-API.

Devi utilizzare questo plugin: https://github.com/WP-API/rest-filter

28 dic 2017 21:05:27
Commenti

Un plugin alternativo https://github.com/bueltge/wp-rest-api-filter-items che ha test per un solido mantenimento incluso.

bueltge bueltge
11 giu 2019 09:57:46

@bueltge, Interessante. Attualmente utilizzo il plugin rest-api-filter-fields: https://github.com/svrooij/rest-api-filter-fields, che sembra fare più o meno la stessa cosa.

Austin Passy Austin Passy
12 giu 2019 19:21:24
0

Sembra non esserci un modo per fare ciò nella versione attuale dell'API. Senza utilizzare un plugin, può essere ottenuto con un endpoint personalizzato o utilizzando la funzione di filtro della query REST per il tipo di post specifico.

Ecco una funzione di filtro approssimativa che aggiunge un parametro chiamato cat_relation:

add_filter( 'rest_post_query', function( $args, $request ) {
    if($request['cat_relation'] == 'AND') {
        $args['category__and'] = $request['categories'];
    }
    return $args;
}, 10, 2);

Quindi un esempio di URL di richiesta sarebbe:
http://example.com/wp-json/wp/v2/posts?categories=17,8&cat_relation=AND

29 apr 2020 18:15:36
0

Installa il plugin dei filtri menzionato da Austin (https://github.com/WP-API/rest-filter) e prova ?filter[categories]=cat_one_slug%2Bcat_two_slug.

Ho scoperto che %2B è l'equivalente in codice del simbolo +.

Normalmente useremmo + per l'operatore AND ma purtroppo viene convertito in uno spazio, quindi usa %2B invece.

22 mar 2018 02:38:18
0

Filtrare i post basandosi su termini multipli di tassonomie personalizzate usando condizioni logiche "AND", "OR".

Ecco cosa devi fare nelle versioni più recenti di WordPress (v5 e superiori)

Supponiamo che tu abbia due tassonomie personalizzate: settore e servizi.

Ottenere tutti i post che sono taggati con l'ID di tassonomia 51 "O" 52 appartenenti al termine di tassonomia "settore" "OPPURE" Ottenere tutti i post che sono taggati con l'ID di tassonomia 57 "E" 58 appartenenti al termine di tassonomia "servizi"

https://mywordpressbackend.com/wp-json/wp/v2/posts?sector=51+52&offering=57,58&tax_relation=OR

Ottenere tutti i post che sono taggati con l'ID di tassonomia 51 "O" 52 appartenenti al termine di tassonomia "settore" "E" Ottenere tutti i post che sono taggati con l'ID di tassonomia 57 "E" 58 appartenenti al termine di tassonomia "servizi"

https://mywordpressbackend.com/wp-json/wp/v2/posts?sector=51+52&offering=57,58&tax_relation=AND
6 lug 2020 11:42:28
1
-2

Dovresti essere in grado di accedere a più categorie utilizzando il seguente formato:

http://TUOSITO.DEV/wp-json/wp/v2/posts?categories=45+50

Spero che sia utile!

Saluti

14 gen 2017 15:00:21
Commenti

Non sembra funzionare! :)

Jesse P Francis Jesse P Francis
5 feb 2017 17:13:11
0
-2

Questo è quello che ho fatto, funziona perfettamente.

http://example.com/wp-json/wp/v2/articles/?_embed&categories=1,2,3,4&per_page=30
11 giu 2019 08:24:01
0
-2

Ok, quindi mostrerà il numero delle categorie per ogni post quando recuperi i post.

Poi puoi semplicemente filtrare per il numero della categoria in questo modo:

const wpdata = await fetch(`http://example.com/wp-json/wp/v2/posts`);
const jsonresp = await wpdata.json()
const particularcategoryposts = jsonresp.filter(function(item){
    return item.categories == "4";         
});

P.S.

Di default l'API di WP restituisce solo 10 post. Assicurati di specificare che dovrai recuperare più di 10 post se è il caso. Il massimo è 100 post.

const wpdata = await fetch(`http://example.com/wp-json/wp/v2/posts/?per_page=100`);
26 mag 2021 22:27:19