¿Por qué per_page no funciona con categorías en la API de WP?

4

Para comenzar, he estado buscando en varias preguntas y documentos, pero parece que con WordPress ' v2 muchas de las preguntas anteriores ya no son válidas. Lo que estoy tratando de hacer es obtener todas las publicaciones o una publicación singular de una categoría en Postman en lugar de las 10 publicaciones devueltas sin tener que modificar la API en functions.php.

tldr

Comencé haciendo referencia al REST API Handbook y revisando el schema Vi categories y puedo devolver las 10 últimas categorías usando:

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

haciendo referencia a los argumentos veo per_page , así que lo intenté:

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

y devuelve 10 publicaciones de la categoría hello , así que modifiqué e intenté:

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

y me devuelve un error:

  

{       "code": "rest_invalid_param",       "mensaje": "Parámetros no válidos: per_page",       "datos": {           "estado": 400,           "params": {               "per_page": "per_page no es de tipo entero".           }       }}

Buscando en Google I see Cómo recuperar una lista de categorías / etiquetas en Wordpress REST API pero las respuestas se basan en v1 .

Intentando Límite de devolución JSON de la API de Wordpress Yo uso:

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

y recibo una publicación singular, así que modifiqué mi intento de:

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

Ignora el tipo de categoría y devuelve la última publicación. Lea Obtenga más de 10 publicaciones en una categoría específica con la API de WordPress Saqué el ID de una categoría (4) después de usar:

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

luego codificado:

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

y me sale:

  

{       "code": "rest_invalid_param",       "mensaje": "Parámetros no válidos: per_page",       "datos": {           "estado": 400,           "params": {               "per_page": "per_page no es de tipo entero".           }       }}

Pensé que podría usar -1 similar al desarrollo de un tema, pero obtengo un error.

Otras referencias que leí son:

Después de revisar la documentación en Pagination parece para trabajar solo con post y no con category . Solo puedo obtener más de 10 publicaciones si también uso /wp-json/wp/v2/posts?per_page=20 .

Pregunta

Al llamar a la API WP de un sitio, ¿cómo puedo controlar el per_page de devolución de una categoría, ya sea 1 publicación o todas las publicaciones?

    
pregunta DᴀʀᴛʜVᴀᴅᴇʀ 17.07.2018 - 22:55

2 respuestas

1

Después de unas pocas horas probando diferentes permutaciones de cómo obtener un rendimiento en las categorías, encontré mi respuesta. Para establecer el listado de categorías asociadas con post use:

/wp-json/wp/v2/categories/

Necesitaba una categoría particular y el id de esa categoría era 4 y la babosa se llamaba foobar .

Para obtener 1 publicación asociada con la categoría foobar tuve que usar:

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

Para obtener 100 publicaciones asociadas con la categoría foobar que usé:

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

y como descubrí y también se mencionó en la respuesta mi lógica de usar -1 era incorrecto, solo puede usar de 1 a 100. Como se discutió en el comentario sobre qué hacer si hay más de 100 publicaciones, puede llamar a la página usando offset y encontré que bajo la documentación Pagination :

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

para obtener más de 100, debe crear un bucle en el idioma que desee y enviarlo a un archivo. Para ayudar con el bucle en /wp-json/wp/v2/categories/ y cuando hace referencia a la categoría, puede hacer referencia al recuento total en count , que está por debajo del id .

    
respondido por el DᴀʀᴛʜVᴀᴅᴇʀ 18.07.2018 - 13:34
2

Casi todas las URL que estás usando no son válidas de alguna manera:

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

categories_name no es un argumento válido para enumerar publicaciones, e incluso si es que le falta la parte ? de la cadena de consulta.

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

A este también le falta el ? . Los parámetros de consulta en una URL, que la API usa para sus argumentos, deben comenzar con ? , con & para parámetros adicionales. Una cadena de consulta correctamente formateada se ve así:

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

Así que éste:

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

También falta el ? pero esta vez has usado & correctamente (aunque todavía estás usando el argumento categories_name no válido).

Este:

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

Está utilizando un $ por alguna razón. Esa no es una forma válida de separar parámetros en una cadena de consulta (y aún se usa el argumento categories_name no válido).

Este es correcto:

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

Pero basado en tu comentario:

  

Pensé que podría ser capaz de usar -1 similar al desarrollo de un   tema pero me sale un error.

Parece que en realidad lo intentaste:

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

Qué no funcionará, porque -1 no es un valor válido. Solo puedes recuperar entre 1 y 100 resultados con la API.

    
respondido por el Jacob Peattie 18.07.2018 - 04:14

Lea otras preguntas en las etiquetas