API REST de WP: filtrar por categoría 1 Y categoría 2
He estado trabajando con la API REST y estoy atascado con esto: ¿Cómo puedo filtrar posts que estén tanto en cat1 como en cat2?
Por ahora, ?categories[]=45&categories[]=50
devuelve posts en la categoría ID 45 O 50 - ¿cómo puedo obtener posts que estén en 45 Y 50?
Gracias de antemano.

@Jesse mira: WP-API/WP-API#2990
Desde WP 4.7, filter
ha sido eliminado de WP-API.
Necesitas usar este plugin: https://github.com/WP-API/rest-filter

Un plugin alternativo https://github.com/bueltge/wp-rest-api-filter-items que tiene pruebas para una inclusión sólida de mantenimiento.

@bueltge, Interesante. Actualmente uso el plugin rest-api-filter-fields: https://github.com/svrooij/rest-api-filter-fields, que parece hacer prácticamente lo mismo.

Parece que no hay una forma de hacer esto en la versión actual de la API. Sin usar un plugin, se puede lograr con un endpoint personalizado o utilizando la función de filtro de consulta REST para el tipo de publicación específico.
Aquí hay una función de filtro básica que añade un parámetro llamado cat_relation
:
add_filter( 'rest_post_query', function( $args, $request ) {
if($request['cat_relation'] == 'AND') {
$args['category__and'] = $request['categories'];
}
return $args;
}, 10, 2);
Así que una URL de ejemplo sería:
http://example.com/wp-json/wp/v2/posts?categories=17,8&cat_relation=AND

Instala el plugin de filtro que mencionó Austin (https://github.com/WP-API/rest-filter) y prueba con ?filter[categories]=slug_categoria_uno%2Bslug_categoria_dos
.
Descubrí que %2B
es el equivalente en código del símbolo +
.
Normalmente usaríamos +
para el operador AND, pero desafortunadamente se convierte en un espacio, así que usa %2B
en su lugar.

Filtrar publicaciones basadas en múltiples términos de taxonomías personalizadas usando condiciones lógicas "AND" (Y), "OR" (O).
Esto es lo que necesitas hacer en versiones más recientes de WordPress (v5 y superiores)
Digamos que tienes dos taxonomías personalizadas: sector y servicios.
Obtener todas las publicaciones etiquetadas con ID de taxonomía 51 "O" 52 pertenecientes al término de taxonomía "sector" "O" Obtener todas las publicaciones etiquetadas con ID de taxonomía 57 "Y" 58 pertenecientes al término de taxonomía "servicios"
https://mywordpressbackend.com/wp-json/wp/v2/posts?sector=51+52&servicios=57,58&tax_relation=OR
Obtener todas las publicaciones etiquetadas con ID de taxonomía 51 "O" 52 pertenecientes al término de taxonomía "sector" "Y" Obtener todas las publicaciones etiquetadas con ID de taxonomía 57 "Y" 58 pertenecientes al término de taxonomía "servicios"
https://mywordpressbackend.com/wp-json/wp/v2/posts?sector=51+52&servicios=57,58&tax_relation=AND

Bien, mostrará el número de categorías para cada publicación cuando obtengas las publicaciones.
Luego puedes filtrar por el número de categoría así:
const wpdata = await fetch(`http://example.com/wp-json/wp/v2/posts`);
const jsonresp = await wpdata.json()
const particularcategoryposts = jsonresp.filter(function(item){
return item.categories == "4";
});
P.D.
Por defecto, la API de WP solo devuelve 10 publicaciones. Asegúrate de aclarar que necesitarás obtener más de 10 publicaciones si ese es el caso. El máximo son 100 publicaciones.
const wpdata = await fetch(`http://example.com/wp-json/wp/v2/posts/?per_page=100`);
