WordPress: Utilizando post__in como filtro da WP API

Outro dia eu estava trabalhando no desenvolvimento de um aplicativo mobile que utilizava o WordPress como gerenciador de conteúdo e o plugin WP API para criar a API Rest que serviria o conteúdo para o aplicativo. Um dos módulos do aplicativo exibiriam para o usuário os eventos que ele adicionou a sua agenda e como cada evento era um post de um determinado CPT pensei em criar um array com os ID's dos posts que o usuário adicionasse e utilizaria o filtro `post__in` da API para trazer apenas os posts cujos id estivessem no array.

Até ai tudo bem, pesquisando por ai rapidamente descobri que o filtro deveria ficar assim:

wp-json/posts/?filter[post__in][]=1&filter[post__in[]=2

Isso deveria retornar os posts com ID igual a 1 e 2, ma nada… sempre retornava todos os posts.

Depois de muita pesquisa e leitura acabei descobrindo que sem autenticação não é possível utilizar `query vars` privadas do WordPress nos filtros do WP API e como `post__in` é privada o filtro não estava funcionando.

A solução é simples, basta adicionar `post__in` nas variáveis públicas e para isso utilizei o filtro `query_vars`, o código ficou assim:

function public_post_in( $qvars ) {
$qvars[] = 'post__in';
return $qvars;
}
add_filter('query_vars', 'public_post_in', 10, 2);

Espero ajudar alguém no futuro!