Wordpress REST API V2: cum să obții lista tuturor postărilor?

28 ian. 2021, 02:02:31
Vizualizări: 15.5K
Voturi: 0

Am nevoie să obțin o listă cu toate postările dintr-o anumită categorie. Numărul de postări este mai mare de 100. Nu am nevoie de conținutul postărilor. Am nevoie doar de ID și slug.

https://example.com/wp-json/wp/v2/posts/ returnează doar 10 postări cu conținut.

Este posibil să obțin toate postările fără conținut?

4
Comentarii

Paginare! Trebuie să soliciți a doua pagină de date, etc., este documentat în documentația oficială cu exemple pe wordpress.org

Tom J Nowell Tom J Nowell
28 ian. 2021 02:36:18

Da. Dar în acest caz, primesc și conținutul postărilor. Nu am nevoie de atâtea date, nu trebuie să descarc întregul conținut al postărilor. Am nevoie doar de ID și slug. De asemenea, în acest caz, trebuie să generez mai multe interogări. Este posibil să obțin mai puține date (doar lista, fără conținut) într-o singură interogare?

Andrey Epifantsev Andrey Epifantsev
28 ian. 2021 05:12:16

Înțeleg, ar fi mai bine să pui 2 întrebări ca 2 întrebări separate decât să le combini, pentru că asta reduce probabilitatea de a primi un răspuns, deoarece pentru a posta o soluție ar trebui să cunoști răspunsul la ambele întrebări. De asemenea, există o șansă extrem de mare ca întrebarea despre paginare să fi fost deja pusă și răspunsă pe site. Și politica de o întrebare per întrebare. Întrebări ușor de înțeles, clare și focalizate primesc mai multe voturi pozitive, vizibilitate, vizualizări și răspunsuri

Tom J Nowell Tom J Nowell
28 ian. 2021 13:00:09
Toate răspunsurile la întrebare 2
0

Din cutie și folosind cârligele și API-urile disponibile în nucleu, nu poți avea mai mult de 100 de articole per răspuns în WordPress REST API din motive de performanță. Pentru a doua parte a întrebării, poți elimina câteva câmpuri din răspuns folosind parametrul _fields în cererea ta, așa cum poți vedea în exemplele din manual:

    // opțiunea a: folosind nume de câmpuri separate prin virgulă.
    https://example.com/wp-json/wp/v2/posts/?_fields=author,id,excerpt,title,link

    // opțiunea b: folosind sintaxa de array.
    https://example.com/wp-json//wp/v2/posts?_fields[]=author&_fields[]=id&_fields[]=excerpt&_fields[]=title&_fields[]=link

Și teoretic, dacă deții website-ul, ai putea elimina câmpuri din răspunsul API folosind filtrul dinamic rest_prepare_{$this->post_type} pentru tipul/tipurile de postări pe care dorești să le modifici.

if(!function_exists('wpse_382314_post_filter_data')) :
    function wpse_382314_post_filter_data($response, $post) {
        $response->data['post_title'] = '';
        $response->data['post_content'] = '';
    }
}

add_filter('rest_prepare_post', 'wpse_382314_post_filter_data', 10, 3);
28 ian. 2021 06:52:17
0

În primul rând, pentru a obține mai mult de 10 articole, tot ce trebuie să faci este să furnizezi parametrul per_page.

https://example.com/wp-json/wp/v2/posts/?per_page=100

Dar da, uneori pot exista mii de articole, iar în acest caz nu este o idee bună să le obții pe toate într-un singur apel REST API. Putem combina două cereri folosind atât parametrul per_page, cât și page,

https://example.com/wp-json/wp/v2/posts/?per_page=100&page=1
https://example.com/wp-json/wp/v2/posts/?per_page=100&page=2

sau poți găsi și exemplul cu PHP și WordPress HTTP API aici: https://rudrastyh.com/wordpress/rest-api-get-posts.html#parameters

27 mar. 2024 06:02:55