L'API REST di WP non supporta più il parametro filter, come posso ottenere i post in una tassonomia personalizzata?

3 dic 2016, 11:59:49
Visualizzazioni: 24.4K
Voti: 8

In giro per Internet vedo consigli di persone che dicono che quando si vogliono ottenere post in una tassonomia personalizzata si dovrebbe usare il parametro filter, per esempio:

https://example.com/wp-json/wp/v2/posts?filter[genre]=fiction

Questo sembra un parametro molto utile. Ma nella v2 dell'API REST di WP semplicemente non funziona. Quando ho creato un ticket su WP Trac per scoprire cosa stava succedendo, @swissspidy ha risposto che "il parametro filter è stato rimosso intenzionalmente" ma che la documentazione non è stata ancora aggiornata. La modifica è discussa nel ticket 38378 di Trac.

OK, giusto, ma qualcuno potrebbe dirmi come dovrei recuperare i post in una tassonomia personalizzata adesso? Sto scrivendo un plugin che dipende dalla possibilità di fare questo.

Per esempio, se ho creato una tassonomia personalizzata non gerarchica instance e le ho dato il valore 1 per determinati post in un tipo di post personalizzato, come posso recuperare tutti i post di quel tipo e con instance=1?

Se non è possibile tramite l'API REST, c'è un modo per farlo tramite l'API di WordPress.com su un sito self-hosted abilitato con Jetpack?

5
Commenti

Prova questo plugin https://github.com/bueltge/wp-rest-api-filter-items

bueltge bueltge
7 dic 2016 11:41:27

Grazie @bueltge, ma sembra che quel plugin serva a filtrare quali campi l'API restituisce per ogni post?

And Finally And Finally
7 dic 2016 14:19:33

Attualmente aiuta a filtrare post, commenti, tassonomie. Se hai bisogno di più, è necessario un miglioramento in https://github.com/bueltge/wp-rest-api-filter-items/tree/master/inc/Items.

bueltge bueltge
7 dic 2016 15:12:28

Anche in questo contesto https://github.com/WP-API/rest-filter

bueltge bueltge
7 dic 2016 20:14:08

Ah grazie! È proprio il tipo di filtro di cui parlavo! Se vuoi postarlo come risposta la accetterò. Presumibilmente c'erano buone ragioni per rimuovere l'argomento del filtro, quindi potrebbe non essere sempre la cosa migliore ripristinarlo, ma è un plugin estremamente utile che mi indica come ottenere ciò che voglio fare.

And Finally And Finally
8 dic 2016 13:41:54
Tutte le risposte alla domanda 2
4

Da WordPress 4.7 l'argomento filter per qualsiasi endpoint di post è stato rimosso. Ma se ne hai bisogno, puoi aggiungerli tramite un plugin. Il repository delle API WP ha un plugin 'Rest Filter' per questo compito, piccolo e semplice.

8 dic 2016 13:48:23
Commenti

Grazie! Questo ha funzionato per me. Non ero sicuro se ci fossero svantaggi nel ripristinare completamente l'argomento del filtro, quindi invece di installare il plugin ho semplicemente seguito il suo esempio per creare un filtro di query API REST per il mio custom post type che aggiunge $args['tax_query'] agli argomenti. Questo mi permette di filtrare i miei post personalizzati in base ai tag della tassonomia personalizzata nell'API. Ma per le persone che vogliono ripristinare l'argomento del filtro, il plugin farà al caso loro.

And Finally And Finally
8 dic 2016 14:29:57

@AndFinally ti dispiacerebbe postare come hai implementato il tuo filtro di tassonomia sui custom post type, sarebbe di grande aiuto!

bmiskie bmiskie
10 apr 2017 20:33:36

@bmiskie Basta installare il plugin e il parametro filter dovrebbe funzionare come prima

Sisir Sisir
24 lug 2017 12:09:20

Ho esaminato il problema su GitHub relativo al parametro filter (https://github.com/WP-API/WP-API/issues/2799) e rimanda a un canale Slack a cui non ho accesso, quindi non posso vedere le motivazioni alla base della decisione. Qualcuno può spiegare perché è stato rimosso?

jagershark jagershark
2 ott 2018 19:14:11
0

La documentazione della REST API di WordPress ha una sezione dedicata alla registrazione di post personalizzati e tassonomie con l'API. In sostanza, bisogna aggiungere 'show_in_rest' => true durante la registrazione del custom post type o della tassonomia personalizzata.

register_taxonomy('instance', ['post'], [
    <altri argomenti...>,
    'show_in_rest' => true,
]);

Una volta fatto questo, puoi filtrare qualsiasi oggetto per cui hai registrato quella tassonomia ('post' nell'esempio sopra) utilizzando il nome della tassonomia come parametro nella query string, ad esempio:

https://example.com/wp-json/wp/v2/posts?instance=1

Nota che il valore del parametro della tassonomia ('1' nell'esempio sopra) deve essere l'id dell'oggetto tassonomia, non il suo nome o slug. Se conosci solo lo slug e non l'id, puoi prima cercare l'id interrogandolo separatamente, poiché registrare la tua tassonomia personalizzata con l'API crea anche il suo endpoint personalizzato:

https://example.com/wp-json/wp/v2/instance?slug=foo-bar
28 apr 2020 02:24:14