WP REST API nu mai suportă parametrul filter, așa că cum obțin postări dintr-o taxonomie personalizată?
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?

Î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.

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.

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

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

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?

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
