No meu plugin personalizado que exibe coleções e itens do Tainacan via shortcodes com página de configurações, filtros dinâmicos e suporte multilíngue, qual é a estrutura correta do metaquery na API REST v2 para filtrar por intervalo de datas? Especificamente, como devo formatar os valores de data (texto, ISO, timestamp) e quais operadores de comparação são suportados para metadatos do tipo data, já que atualmente retorna resultados vazios mesmo quando existem itens dentro do intervalo especificado e os filtros funcionam corretamente no admin do Tainacan?
MT_DEBUG - Filtros de data recebidos - Mín: 1900, Máx: 1950
MT_DEBUG - Metadados de data encontrados: 4755, 4756, 4757
MT_DEBUG - Aplicando filtros de data: 1900 - 1950 no metadado: 4755
MT_DEBUG - Parâmetros com metaquery: {“collection_id”:4740,“metaquery”:[{“key”:“4755”,“value”:“1900”,“compare”:“>=”},{“key”:“4755”,“value”:“1950”,“compare”:“<=”}]}
MT_DEBUG - RESULTADO DOS FILTROS DE DATA - Itens: 0, Total: 0
MT_DEBUG - ALERTA: Filtros de data retornaram 0 itens, mas a coleção pode ter itens
Metadados de data são encontrados corretamente. A query é montada e enviada para a API. A API retorna 200 OK mas com arrays vazios. O problema está na formatação ou estrutura do metaquery para filtros de data. Obrigado, JP
Só pra me ajudar a entender um pouco mais aqui, esta sua função get_api_url está chamando qual endpoint? O /wp-json/tainacan/v2/items? E neste caso você está querendo fazer um filtro por data ou por número? Porque se for data mesmo aí você precisaria passar elas no formato yyyy-mm-dd.
Uma boa maneira de visualizar como a API monta estas consultas é justamente criando filtros na interface e inspecionando as requisições de rede do navegador.
metaquery[0][key] = 57
metaquery[0][value][0] = 1985-11-06
metaquery[0][value][1] = 2025-11-12
metaquery[0][compare] = BETWEEN
metaquery[0][type] = DATE
Esta forma de mostrar o array é uma notação do WordPress. Podem ter outros filtros aplicados, por isso metaquery é um array. O operador BETWEEN é possível por conta do type ser DATE.
Você tem toda a razão! O formato yyyy-mm-dd era realmente a solução, mas o problema principal era que eu estava usando os metadatos errados (4755, 4756, 4757) que nem eram do tipo data. Seguindo sua sugestão de verificar a estrutura real, implementei uma busca por todos os metadatos da coleção e encontrei o correto: ID 4775 do tipo Tainacan\Metadata_Types\Date. Agora com as datas no formato 1900-01-01 a 1950-12-31 e usando o metadato certo, os filtros funcionam perfeitamente e retornam resultados! Muito obrigado pela paciência e pelas orientações precisas.