Recentemente precisei alterar os parâmetros de busca da WP REST API.
Claro que você sempre pode mudar os parâmetros que envia para a API, mas nesse caso específico de um aplicativo, eu precisa remover com urgência uma categoria que estava exibindo quando o app exibia os posts do WordPress. Não dava para corrigir a busca no app, mandar para a Apple e esperar 6 dias para uma aprovação.
Existe um filtro pouco documentado, que resolve isso. O funcionamento é semelhando ao pre_get_posts.
No exemplo abaixo eu excluo uma categoria de todas as queries feitas na REST API. Você pode adaptar para sua necessidade.
1 2 3 4 5 6 7 8 9 10 |
function exclude_categories_from_REST( $args, $request ) { // O ID da categoria você deseja excluir da API. (o "-" é justamente para excluir a categoria na busca) $cat = array(-22); // faz um merge dos parâmetros que foram passados para a API com o novo adicionado agora. $args = array_merge($args, array("cat" => $cat)); return $args; } add_filter( 'rest_post_query', 'exclude_categories_from_REST', 10, 2 ); |
Para usar o mesmo filtro para outros post_type, você tem que usar o filtro assim: rest_{post_type}_query (remova as {})
Testado e funcionando. 😀