WP REST API: filtrare după categoria 1 ȘI categoria 2

6 ian. 2017, 11:39:49
Vizualizări: 48.3K
Voturi: 23

M-am jucat cu REST API și m-am blocat aici: Cum pot filtra postările care sunt în ambele categorii cat1 și cat2?

Momentan, ?categories[]=45&categories[]=50 returnează postările din categoria cu ID-ul 45 SAU 50 - cum pot obține postările care sunt în ambele categorii 45 ȘI 50?

Mulțumesc anticipat.

2
Comentarii

Ai găsit o soluție pentru asta?

Corey Corey
3 feb. 2017 19:03:39

@Corey: Nu. Cred că nu este posibil, cel puțin deocamdată (am văzut și alte postări de suport pentru plugin-uri care afirmă același lucru). Eu foloseam API-ul pentru o aplicație în Ionic, le-am încărcat separat și am făcut intersecția în schimb. Las problema deschisă, în caz că învățarea mea este incompletă. Am citit pe undeva că unii au modificat plugin-ul (nu este deloc recomandat) pentru a obține asta.

Jesse P Francis Jesse P Francis
5 feb. 2017 17:17:40
Toate răspunsurile la întrebare 8
1
15

Mai multe categorii pot fi separate prin virgulă, ca în exemplul de mai jos

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

Sper că acest lucru vă ajută

11 mai 2017 12:25:23
Comentarii

Solicitarea este pentru căutarea AND, aceasta vă va oferi OR.

Tom Woodward Tom Woodward
9 sept. 2019 02:29:32
2

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

Începând cu WP 4.7, parametrul filter a fost eliminat din WP-API.

Trebuie să folosești acest plugin: https://github.com/WP-API/rest-filter

28 dec. 2017 21:05:27
Comentarii

Un alt plugin https://github.com/bueltge/wp-rest-api-filter-items care are teste pentru o includere solidă de întreținere.

bueltge bueltge
11 iun. 2019 09:57:46

@bueltge, Interesant. În prezent folosesc plugin-ul rest-api-filter-fields: https://github.com/svrooij/rest-api-filter-fields, care pare să facă cam același lucru.

Austin Passy Austin Passy
12 iun. 2019 19:21:24
0

Se pare că nu există o modalitate de a face acest lucru în versiunea curentă a API-ului. Fără a utiliza un plugin, se poate realiza cu un endpoint personalizat sau prin utilizarea funcției de filtrare a interogării REST pentru tipul specific de articol.

Iată o funcție de filtrare aproximativă care adaugă un parametru numit cat_relation:

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

Deci, un exemplu de URL de solicitare ar fi:
http://example.com/wp-json/wp/v2/posts?categories=17,8&cat_relation=AND

29 apr. 2020 18:15:36
0

Instalează plugin-ul de filtrare menționat de Austin (https://github.com/WP-API/rest-filter) și încearcă ?filter[categories]=cat_one_slug%2Bcat_two_slug.

Am aflat că %2B este echivalentul codului pentru simbolul +.

În mod normal am folosi + pentru operatorul AND dar, din păcate, acesta este convertit într-un spațiu, așa că folosește %2B în schimb.

22 mar. 2018 02:38:18
0

Filtrarea postărilor bazată pe mai mulți termeni de taxonomie personalizată folosind condiții logice "ȘI", "SAU".

Iată ce trebuie să faceți în versiunile mai noi ale WordPress (v5 și mai sus)

Să presupunem că aveți două taxonomii personalizate: sector și oferte.

Obținerea tuturor postărilor care sunt etichetate cu ID-ul de taxonomie 51 "SAU" 52 aparținând termenului de taxonomie "sector" "SAU" Obținerea tuturor postărilor care sunt etichetate cu ID-ul de taxonomie 57 "ȘI" 58 aparținând termenului de taxonomie "oferte"

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

Obținerea tuturor postărilor care sunt etichetate cu ID-ul de taxonomie 51 "SAU" 52 aparținând termenului de taxonomie "sector" "ȘI" Obținerea tuturor postărilor care sunt etichetate cu ID-ul de taxonomie 57 "ȘI" 58 aparținând termenului de taxonomie "oferte"

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

Ar trebui să poți accesa mai multe categorii folosind următoarea adresă:

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

Sper că te ajută!

Noroc

14 ian. 2017 15:00:21
Comentarii

Nu pare să funcționeze! :)

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

Asta este ce am făcut, funcționează perfect.

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

Bine, deci va afișa numărul categoriilor pentru fiecare articol când preiei postările.

Apoi poți filtra pur și simplu după numărul categoriei astfel:

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.

În mod implicit, API-ul WP returnează doar 10 postări. Asigură-te că menționezi că va trebui să preiei mai mult de 10 postări dacă este cazul. Maximul este de 100 de postări.

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