web-dev-qa-db-fra.com

Pourquoi per_page ne fonctionne-t-il pas avec les catégories dans WP API?

Pour commencer, j'ai parcouru plusieurs questions et documentations, mais avec le v2 de WordPress, il semble que beaucoup d'anciennes questions ne soient plus valables. Ce que j'essaie de faire est d'obtenir tous les messages ou un message singulier d'une catégorie dans Postman au lieu des 10 messages renvoyés en commun sans avoir à modifier l'API dans functions.php.

tldr

J'ai commencé par référencer le REST Manuel d'API et examiner le schéma j'ai vu categories et je peux renvoyer les 10 dernières catégories à l'aide de:

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

référençant le arguments je vois per_page alors j'ai essayé:

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

et il retourne 10 articles de la catégorie hello alors j’ai modifié et essayé:

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

et je reçois une erreur renvoyée:

{"code": "rest_invalid_param", "message": "Paramètre (s) invalide (s): per_page", "data": {"status": 400, "params": {"per_page": "per_page n'est pas de type entier . " }}}

Recherche dans Google I _ { voir Comment récupérer une liste de catégories/balises dans Wordpress REST API } _ mais les réponses sont basées sur v1.

Essayer _ { limite de retour JSON de l'API Wordpress } que j'utilise:

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

et je reçois un post singulier alors j'ai modifié ma tentative de:

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

Il ignore le type de catégorie et renvoie le dernier message. Lecture _ { Obtenez plus de 10 articles dans une catégorie spécifique avec l'API WordPress } _ J'ai tiré l'ID d'une catégorie (4) après avoir utilisé:

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

puis codé:

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

et je reçois:

{"code": "rest_invalid_param", "message": "Paramètre (s) invalide (s): per_page", "data": {"status": 400, "params": {"per_page": "per_page n'est pas de type entier . " }}}

Je pensais pouvoir utiliser -1 de la même façon que le développement d'un thème, mais je reçois une erreur.

Les autres références que j'ai lues sont:

Après avoir examiné la documentation sur pagination , il semble que cela fonctionne uniquement avec la variable post et non avec aucune category. Je ne peux obtenir plus de 10 messages si j'utilise aussi /wp-json/wp/v2/posts?per_page=20.

Question

Lors de l'appel de l'API WP d'un site, comment puis-je contrôler le retour per_page d'une catégorie, qu'il s'agisse d'une publication ou de toutes les publications?

4

Après quelques heures passées à essayer différentes solutions pour obtenir un retour sur les catégories, j'ai trouvé ma réponse. Pour établir la liste des catégories associées à post, utilisez:

/wp-json/wp/v2/categories/

J'avais besoin d'une catégorie particulière et la id de cette catégorie était 4 et le slug s'appelait foobar.

Pour obtenir un poste associé à la catégorie foobar, je devais utiliser:

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

Pour obtenir 100 posts associés à la catégorie foobar j'ai utilisé:

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

et comme je l'ai découvert et cela a également été mentionné dans le answer ma logique d'utilisation de -1 était incorrecte, vous ne pouvez utiliser que 1 à 100. Comme il en a été discuté dans le commentaire, que faire s'il y a plus plus de 100 articles, vous pouvez appeler la page avec offset et j’ai trouvé que, dans la documentation Pagination :

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

donc pour en avoir plus de 100, vous devez créer une boucle dans la langue de votre choix et l'envoyer dans un fichier. Pour faciliter le bouclage sous /wp-json/wp/v2/categories/ et lorsque vous référencez la catégorie, vous pouvez référencer le nombre total sous count qui est inférieur à id.

1

Pratiquement toutes les URL que vous utilisez ne sont pas valides:

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

categories_name n'est pas un argument valide pour les publications de liste, et même si c'était le cas, il manque la partie ? de la chaîne de requête.

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

Celui-ci manque également le ?. Les paramètres de requête sur une URL, que l'API utilise pour ses arguments, doivent commencer par ?, avec & pour les paramètres supplémentaires. Une chaîne de requête correctement formatée ressemble à ceci:

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

Alors celui-ci:

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

Il manque également le ? mais vous avez utilisé & correctement cette fois (même si vous utilisez toujours l'argument categories_name non valide).

Celui-là:

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

Utilise un $ pour une raison quelconque. Ce n'est pas un moyen valide de séparer les paramètres dans une chaîne de requête (tout en utilisant toujours l'argument categories_name non valide).

Celui-ci est correct:

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

Mais basé sur votre commentaire:

Je pensais que je pourrais peut-être utiliser -1 similaire au développement d'un thème mais je reçois une erreur.

Cela ressemble à vous en fait essayé:

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

Which will ne fonctionnera pas, car -1 est une valeur non valide. Vous pouvez uniquement extraire entre les résultats 1 et 100 avec l'API.

2
Jacob Peattie