WP REST API nu mai suportă parametrul filter, așa că cum obțin postări dintr-o taxonomie personalizată?

3 dec. 2016, 11:59:49
Vizualizări: 24.4K
Voturi: 8

Pe tot internetul văd sfaturi de la persoane care spun că atunci când vrei să obții postări dintr-o taxonomie personalizată ar trebui să folosești parametrul filter, de exemplu:

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

Acesta pare un parametru foarte util. Dar în v2 a WP REST API pur și simplu nu mai funcționează. Când am creat un ticket WP Trac pentru a afla ce se întâmplă, @swissspidy a răspuns că "parametrul filter a fost eliminat intenționat" dar documentația nu a fost încă actualizată. Modificarea este discutată în Trac ticket 38378.

OK, înțeleg, dar poate cineva să-mi spună cum ar trebui să recuperez postări dintr-o taxonomie personalizată acum? Scriu un plugin care depinde de această funcționalitate.

De exemplu, dacă am creat o taxonomie personalizată non-ierarhică instance și i-am dat valoarea 1 pentru anumite postări într-un tip de postare personalizat, cum pot recupera toate postările de acel tip și cu instance=1?

Dacă nu este posibil prin REST API, există o modalitate de a face acest lucru prin WordPress.com API pe un site self-hosted cu Jetpack activat?

5
Comentarii

Încearcă acest plugin https://github.com/bueltge/wp-rest-api-filter-items

bueltge bueltge
7 dec. 2016 11:41:27

Mulțumesc @bueltge, dar se pare că acel plugin este pentru a filtra ce câmpuri returnează API-ul pentru fiecare articol?

And Finally And Finally
7 dec. 2016 14:19:33

În prezent ajută la filtrarea articolelor, comentariilor, taxonomiilor. Dacă ai nevoie de mai mult, este necesară o îmbunătățire în https://github.com/bueltge/wp-rest-api-filter-items/tree/master/inc/Items.

bueltge bueltge
7 dec. 2016 15:12:28

Tot în acest context https://github.com/WP-API/rest-filter

bueltge bueltge
7 dec. 2016 20:14:08

Ah, mulțumesc! Exact acest tip de filtru aveam în minte! Dacă vrei să postezi asta ca răspuns, îl voi accepta. Probabil au existat motive întemeiate pentru eliminarea argumentului de filtrare, așa că poate nu e cea mai bună soluție în toate cazurile să-l restaurezi, dar este un plugin extrem de util care mă îndreaptă spre cum să realizez ceea ce vreau să fac.

And Finally And Finally
8 dec. 2016 13:41:54
Toate răspunsurile la întrebare 2
4

Începând cu WordPress 4.7, argumentul filter pentru orice endpoint de postări a fost eliminat. Dar dacă aveți nevoie de acestea, le puteți adăuga prin intermediul unui plugin. Repozitoriul WP API are un plugin 'Rest Filter' pentru această sarcină, mic și simplu.

8 dec. 2016 13:48:23
Comentarii

Mulțumesc! Asta a funcționat pentru mine. Nu eram sigur dacă există dezavantaje în a restaura întregul argument de filtrare, așa că în loc să instalez plugin-ul, am urmat exemplul său pentru a crea un filtru de interogare API REST pentru tipul meu de postare personalizată care adaugă $args['tax_query'] la argumente. Acest lucru îmi permite să filtrez postările mele personalizate în funcție de eticheta de taxonomie personalizată în API. Dar pentru cei care doresc să restaureze argumentul de filtrare, plugin-ul va face treaba.

And Finally And Finally
8 dec. 2016 14:29:57

@AndFinally te superi să postezi cum ai realizat filtrul pe taxonomie pentru tipurile de postări personalizate, ar fi de mare ajutor!

bmiskie bmiskie
10 apr. 2017 20:33:36

@bmiskie Doar instalează plugin-ul și parametrul de filtrare ar trebui să funcționeze ca înainte

Sisir Sisir
24 iul. 2017 12:09:20

Am verificat problema de pe GitHub pentru parametrul de filtrare (https://github.com/WP-API/WP-API/issues/2799) și aceasta trimite către un canal Slack din care nu fac parte, așa că nu pot vedea motivele din spatele deciziei. Poate cineva să explice de ce a fost eliminat?

jagershark jagershark
2 oct. 2018 19:14:11
0

Documentația API-ului WordPress REST are o secțiune despre înregistrarea postărilor personalizate și a taxonomiilor în API. În esență, adăugați 'show_in_rest' => true când înregistrați tipul de postare personalizată sau taxonomia personalizată.

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

Odată ce acest lucru este făcut, puteți filtra orice obiect pentru care ați înregistrat acea taxonomie ('post' în exemplul de mai sus) după acea taxonomie personalizată folosind numele acesteia ca parametru în șirul de interogare, de exemplu:

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

Rețineți că valoarea parametrului taxonomiei ('1' în exemplul de mai sus) trebuie să fie id-ul obiectului taxonomiei, nu numele sau slug-ul acestuia. Dacă cunoașteți doar slug-ul și nu id-ul, puteți căuta mai întâi id-ul prin interogarea separată a acestuia, deoarece înregistrarea taxonomiei personalizate în API creează și propriul său endpoint personalizat:

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