¿Cómo puedo obtener una lista de publicaciones para una categoría con WP-API?

3 minutos de lectura

Debería ser fácil, pero no lo encontré en el Documentos de WP-API.

avatar de usuario
thomas

Lo encontré, un poco [hidden][1]

Usando el nombre de la categoría:
/posts?categories=1

Prueba este.

  • Hmm, en realidad no lo es que oculto en los documentos: wp-api.org/#posts_retrieve-posts_input

    – thomas

    18 de febrero de 2015 a las 12:16

  • Parece que el enlace en su comentario ya no es correcto (¿quizás se cambió en una actualización de versión?). De todos modos, ¿es posible hacer un filtro negativo, como todas las publicaciones que no tienen un category_name eso es MyCategory?

    – El desarrollador desconocido

    18/10/2016 a las 15:24


  • Cambiado en v2 &categories=1

    –Tom Woodward

    29 mayo 2017 a las 15:58

  • Parece que wordpress eliminó los filtros de la API desde WordPress 4.7. La respuesta de @TomWoodward funciona.

    – geochanto

    30 de enero de 2019 a las 20:28

Esta pregunta es un duplicado de esta otra pregunta del foro

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

Lo anterior devolverá las publicaciones de category 20 OR category 30

Lo he probado con tipos de publicaciones personalizadas y también funciona perfectamente.

La respuesta y los créditos son para “Manish Jung Thapa”

  • ¿Cómo hacer la relación Y?

    – Mohamad Alasly

    3 de junio de 2021 a las 6:55

Para el nombre de la categoría, se deben agregar dos filtros como este:

add_filter( "rest_post_query", function( $args, $request){
                if ( isset( $request['category_name']) && !empty($request['category_name'] ) ) {
                    $args['category_name'] = $request['category_name'];
                }
                return $args;
            }, 10, 2);


add_filter( "rest_post_collection_params", function($query_params, $post_type){
                $query_params[ 'category_name' ] = array(           
                    'description' => __( 'Category name.' ),
                    'type'        => 'string',
                    'readonly'    => true,
                );
                return $query_params;
            }, 10, 2);

  • Esto todavía funciona, creo que también vi esto en el problema de github, sin embargo, ty.

    – Pala

    23 mayo 2017 a las 18:30

  • ¡Gracias! Para que conste, noté que para que esto funcione, el parámetro de consulta nombre_categoría debe estar ANTES del parámetro _campos.

    – S. Roose

    9 de abril de 2021 a las 10:43

Este código está funcionando para mí.

Agregue a su función.php

function rest_filter_by_custom_taxonomy( $args, $request ) {

if ( isset($request['category_slug']) )
{
    $category_slug = sanitize_text_field($request['category_slug']);
    $args['tax_query'] = [
        [
            'taxonomy' => 'category',
            'field'    => 'slug',
            'terms'    => $category_slug,
        ]
    ];
}

return $args;

 }
 add_filter('rest_post_query', 'rest_filter_by_custom_taxonomy', 10, 3);

EJ: /wp-json/wp/v2/posts?category_slug=noticias

Esta URL de ejemplo funcionó para mí … https://tudominio.com/?rest_route=/wp/v2/posts&categories=99

  • ¿Qué agrega esta publicación a esta pregunta, que las otras respuestas no?

    – Azul

    29 de enero de 2018 a las 21:11

  • No necesita agregar todo el código anterior; solo puede acceder a los datos sin procesar a través de la barra de ubicación.

    – ja de

    30 de enero de 2018 a las 14:23

  • Esta respuesta no tiene ningún código, y resume bastante bien esta publicación.

    – Azul

    30 de enero de 2018 a las 14:27

  • ¿Qué agrega esta publicación a esta pregunta, que las otras respuestas no?

    – Azul

    29 de enero de 2018 a las 21:11

  • No necesita agregar todo el código anterior; solo puede acceder a los datos sin procesar a través de la barra de ubicación.

    – ja de

    30 de enero de 2018 a las 14:23

  • Esta respuesta no tiene ningún código, y resume bastante bien esta publicación.

    – Azul

    30 de enero de 2018 a las 14:27

¿Ha sido útil esta solución?