it-swarm.com.de

Warum funktioniert per_page nicht mit Kategorien in WP API?

Zu Beginn habe ich mehrere Fragen und Dokumentationen durchsucht, aber es scheint, dass mit WordPress 'v2 viele der alten Fragen nicht mehr gültig sind. Was ich versuche, ist, alle Beiträge oder einen einzelnen Beitrag aus einer Kategorie in Postman zu erhalten, anstatt die allgemeinen 10 zurückgegebenen Beiträge, ohne dass die API in functions.php geändert werden muss.

tldr

Ich habe mit dem Verweisen auf das REST API-Handbuch und dem Überprüfen des Schemas begonnen. Ich habe categories gesehen und kann die 10 neuesten Kategorien zurückgeben, indem ich Folgendes verwende:

http://foobar.com/wp-json/wp/v2/posts/categories_name=hello

ich verweise auf die Argumente Ich sehe per_page, also habe ich versucht:

http://foobar.com/wp-json/wp/v2/posts/categories_name=hello?per_page=‌​1

und es gibt 10 Beiträge aus der Kategorie hello zurück, also habe ich Folgendes geändert und versucht:

http://foobar.com/wp-json/wp/v2/posts/categories_name=hello&per_page=‌​1

und ich bekomme einen Fehler zurück:

{"code": "rest_invalid_param", "message": "Ungültige Parameter: per_page", "data": {"status": 400, "params": {"per_page": "per_page ist keine Ganzzahl . " }}}

Durchsuchen von Google I siehe So rufen Sie eine Liste von Kategorien/Tags in Wordpress REST API ab aber die Antworten basieren auf v1.

Versuch Wordpress API JSON Rückgabebegrenzung Ich benutze:

http://foobar.com/wp-json/wp/v2/posts/?per_page=‌​1

und ich bekomme einen singulären Beitrag, deshalb habe ich meinen Versuch modifiziert:

http://foobar.com/wp-json/wp/v2/posts/?per_page=‌​1$categories_name=hello

Es ignoriert den Kategorietyp und gibt den neuesten Beitrag zurück. Lesen Erhalten Sie mit der WordPress-API mehr als 10 Beiträge in einer bestimmten Kategorie Ich habe die ID einer Kategorie (4) abgerufen, nachdem ich Folgendes verwendet habe:

http://foobar.com/wp-json/wp/v2/categories

dann codiert:

http://foobar.com/wp-json/wp/v2/posts/?categories=4&per_page=‌​1

und ich bekomme:

{"code": "rest_invalid_param", "message": "Ungültige Parameter: per_page", "data": {"status": 400, "params": {"per_page": "per_page ist keine Ganzzahl . " }}}

Ich dachte, ich könnte -1 verwenden, ähnlich wie bei der Entwicklung eines Themas, aber ich bekomme eine Fehlermeldung.

Andere Referenzen, die ich lese, sind:

Nach Durchsicht der Dokumentation zu Paginierung scheint es nur mit der post und nicht mit einer category zu funktionieren. Ich kann nur mehr als 10 Beiträge erhalten, wenn ich auch /wp-json/wp/v2/posts?per_page=20 verwende.

Frage

Wie kann ich beim Aufrufen der WP -API einer Site die per_page -Rückgabe einer Kategorie steuern, ob es sich um 1 Beitrag oder alle Beiträge handelt?

Nachdem ich einige Stunden lang verschiedene Permutationen ausprobiert hatte, wie man eine Rückkehr zu Kategorien erhält, fand ich meine Antwort. So erstellen Sie die Liste der mit post verknüpften Kategorien:

/wp-json/wp/v2/categories/

Ich brauchte eine bestimmte Kategorie und die id dieser Kategorie war 4 und die Schnecke hieß foobar.

Um 1 Beitrag zu erhalten, der der Kategorie foobar zugeordnet ist, musste ich Folgendes verwenden:

/wp-json/wp/v2/posts?categories=4&per_page=1

Um 100 Beiträge zu erhalten, die mit der von mir verwendeten Kategorie foobar verknüpft sind:

/wp-json/wp/v2/posts?categories=4&per_page=100

und wie ich herausgefunden habe und es auch in answer erwähnt wurde, war meine Logik der Verwendung von -1 falsch, Sie können nur 1 bis 100 verwenden. Wie im Kommentar besprochen, was zu tun ist, wenn es mehr als 100 gibt Beiträge, nun, Sie können die Seite mit offset aufrufen und ich fand, dass unter der Dokumentation Paginierung :

/wp-json/wp/v2/posts?categories=4&offset=10&per_page=1

um mehr als 100 zu erhalten, müssen Sie eine Schleife in der gewünschten Sprache erstellen und in eine Datei verschieben. Um die Schleife unter /wp-json/wp/v2/categories/ zu unterstützen und wenn Sie die Kategorie referenzieren, können Sie die Gesamtanzahl unter count referenzieren, die sich unter der id befindet.

Fast alle von Ihnen verwendeten URLs sind in irgendeiner Weise ungültig:

http://foobar.com/wp-json/wp/v2/posts/categories_name=hello

categories_name ist kein gültiges Argument für das Auflisten von Posts, und selbst wenn dies der Fall war, fehlt der ?-Teil der Abfragezeichenfolge.

http://foobar.com/wp-json/wp/v2/posts/categories_name=hello?per_page=‌​1

Diesem fehlt auch der ?. Abfrageparameter für eine URL, die die API für ihre Argumente verwendet, müssen mit ? und für zusätzliche Parameter mit & beginnen. Eine korrekt formatierte Abfragezeichenfolge sieht folgendermaßen aus:

http://domain.com/path/?argument=value&argument2=value2

Also das hier:

http://foobar.com/wp-json/wp/v2/posts/categories_name=hello&per_page=‌​1

Fehlt auch der ?, aber Sie haben den & dieses Mal richtig verwendet (verwenden jedoch immer noch das ungültige Argument categories_name).

Dieses:

http://foobar.com/wp-json/wp/v2/posts/?per_page=‌​1$categories_name=hello

Verwendet aus irgendeinem Grund einen $. Dies ist keine gültige Methode, um Parameter in einer Abfragezeichenfolge zu trennen (und trotzdem das ungültige Argument categories_name zu verwenden).

Dieser ist richtig:

http://foobar.com/wp-json/wp/v2/posts/?categories=4&per_page=‌​1

Aber basierend auf Ihrem Kommentar:

Ich dachte, ich könnte -1 verwenden, ähnlich wie bei der Entwicklung eines Themas, aber ich bekomme eine Fehlermeldung.

Es klingt wie Sie tatsächlich versucht:

http://foobar.com/wp-json/wp/v2/posts/?categories=4&per_page=‌​-1

Welches wird nicht funktionieren, weil -1 ein ungültiger Wert ist. Sie können mit der API nur zwischen 1- und 100-Ergebnissen abrufen.

2
Jacob Peattie