Sem explicação aparente, uma grande quantidade de metadados de repositório surgiram “do nada”, e acabaram sendo herdados nas coleções.
A princípio, a solução seria remover um a um. Porém ao acessar os metadados de repositório, esses novos não tem a opção de remoção ou edição. Tampouco consegui identificar onde eles estão armazenados no banco de dados para fazer uma remoção via SQL mesmo.
Gostaria de saber se alguém teria alguma sugestão sobre como sanar essa situação fora do comum…
Para o surgimento dos metadados, meu palpite é que você pode ter rodado alguma importação onde configurou pra serem criados mas acabou configurando pra serem criados no nível repositório ao invés de na coleção destino.
Uma vez criados, os metadados nível repositório não podem ser removidos na edição de metadados da coleção, só do repositório mesmo (aquela que é azul escuro). Você chegou a tentar removê-los lá? (se preciso mande uma captura de tela pra gente aqui da tela de metadados do repositório).
@mateus.m.luna o que está acontecendo é que não consigo editar ou remover os metadados dentro na área de metadados de repositório. Entendo a lógica de não pode remover os metadados de repositório dentro da coleção. O meu problema está na origem.
Deveria ser possível remover um metadado dentro de “Metadados de repositório”, certo? Segue um print da tela de Metadados de repositório. Note que alguns posso editar ou remover e outros não. Isso faria sentido se eu estivesse vendo os metadados de uma coleção, mas não é o caso.
Olhando pro código, um critério que faria você não poder remover os metadados seria permissão. Mas acho estranho não ter permissão pra alguns e pra outros não. Você poderia compartilhar com a gente o retorno de uma requisição? Pode ser um pouco explicar aqui mas é o seguinte… nós vamos precisar que você abra o inspetor de rede, como mencionado aqui:
Abrindo a aba “Rede” ou “Network” no momento em que você carrega a página, você vai ver uma lista de requisições:
A que estamos interessados é uma das últimas que vai ter nesta lista. Ela terá a como caminho /wp-json/tainacan/v2/metadata?nopaging.... Clicando nela, haverá um painel lateral como o indicado ao lado. Ele tem algumas abas, uma dela será a “response” ou “resposta”. Se puder copiar e colar o resultado que é exibido nesta aba aqui, posso dar uma investigada melhor no que está pegando.
Obrigado pelo encaminhamento @Andre_Filipe_Aloise . Só pra me ajudar mais um pouco aqui, pode me dizer o nome dos metadados que não estão removíveis? Parece que você tem uns 267 metadados, é isso mesmo?
@mateus.m.luna talvez seja mais prático informar quais estão editáveis, e que são os que realmente devem existir. Os demais apareceram, e possivelmente deveriam ser metadados de coleção.
Os metadados de repositório válidos, e editáveis, sao:
Identificação do acervo;
Licença de uso;
Idioma;
Tema;
Formato;
Data de publicação;
Coleção;
Possui miniatura;
Tipo de documento;
Informações complementares;
Assunto;
Ano de publicação.
Ok, estão começando a surgir algumas hipóteses aqui… você sabe dizer se tem alguma coleção de ID 171393 no seu repositório? No caso queremos ver se ela existia mas foi apagada, por exemplo. Uma forma de testar isso é olhando e editando diretamente a URL do plugin. Acesse uma página de configuração de coleção e troque o número no final da URL por este.
Isso tá bem estranho @Andre_Filipe_Aloise… nós olhamos aqui os caminhos que esta requisição toma no código e de forma alguma deveria estar vindo os metadados de coleção nela… só por via das dúvidas, vc tem certeza que nenhum outro plugin instalado poderia estar modificando essa requisição? Tem um filtro do WordPress, o pre_get_posts que poderia ser usado para alterar esse comportamento, é o único jeito que eu imagino pra estar rolando… se puder testar ativar/desativar alguns plugins para investigarmos se é um palpite válido…
@mateus.m.luna desativei alguns plugins que poderia ter alguma relação, mas não vi impacto. Acha que tem algum modo de conferir se o filtro pre_get_posts possa estar sendo usado? Ou se essa situação se reflete no BD?
Tem caminhos pra descobrir se um filtro foi chamado mas eu tbm acho que é difícil investigar por aí. O próprio Tainacan chama este filtro mais de uma vez.
Se você tiver acesso ao banco via PHPMyAdmin podemos sim verificar algumas coisas direto no banco. Mas é estranho, olhando pelos resultados que você compartilhou os dados em si estão corretos (os metadados nível repositório tem o valor “default” no seu collection_id enquanto os nível coleção tem o valor com o seu respectivo ID).
O que não deveria acontecer é esta requisição que você inspecionou (/wp-json/tainacan/v2/metadata) trazer metadados da coleção, visto que eles só deveriam vir quando a requisição for para /wp-json/tainacan/v2/collection/<id-da-colecao>/metadata. Entrando em detalhes no código, isso é separado aqui:
Mas é isso, não tem muita lógica… @vnmedeiros vc consegue imaginar mais alguma coisa que possamos investigar aqui?
Eu fiz uma busca extensa no BD usando o phpMyAdmin e cheguei a conclusão que não deve ser um problema de dados mal organizados nas tabelas. Um dos pontos que observei fui justamente o “default” para o collection_id.
Talvez valha a pena comparar como está o class-tainacan-rest-metadata-controller.php do lado de cá. Ver se ele está igual ao do github?
bom dia, pelo discutido aqui não consigo visualizar outro caminho a não ser que exista algum trecho de código se utilizando de filtros para alterar os argumentos da query do WP. @mateus.m.luna e @Andre_Filipe_Aloise ao fazer a requisição para o endpoint: /wp-json/tainacan/v2/collection/<id-da-colecao>/metadata , substituindo pelo ID da coleção, os metadados da coleção estão sendo listado corretamente?
@vnmedeiros ao fazer a requisição que recomendaste /wp-json/tainacan/v2/collection/171393/metadata, onde 171393 é o id de uma coleção, o retorno é o seguinte:
{
“code”: “rest_forbidden”,
“message”: “Sem permissão para fazer isso.”,
“data”: {
“status”: 401
}
}
É só fazendo uma DEBUG mais a fundo para poder entender o que pode tá acontecendo @Andre_Filipe_Aloise.
Seria possível você me enviar um dump da base no particular para eu realizar alguns teste?