Acabou que as coisas estavam relacionadas sim. Vou tentar explica aqui, embora possa ficar um pouco técnico.
Antes de tudo, se puder fazer a gentileza de testar a correção com uma versão “em desenvolvimento” nossa:
Basta substituir o plugin atual por esse. Pode ocorrer de que, ao acessar o plugin a primeira vez após a atualização, você precise limpar o cache do seu navegador na janela usada. CTRL+SHIFT+R deve resolver.
Então vamos lá. A ordenação manual dos anexos é feita usando um campo chamado menu_order
que está presente nos posts do tipo anexo do WordPress. Na página do item, a galeria de mídias usa a API interna do WordPress para chamar estes itens, passando como orderby=menu_order
. Já na página de edição de item, é nossa API REST que faz a consulta, também com orderby=menu_order
. O problema é que, em um primeiro momento, quando você envia estes anexos, todos os anexos tem um valor igual de menu_order=0
. Isso faz com que a consulta se perca ao tentar entregar um resultado ordenado, gerando as inconsistências que você notou na paginação.
Após um pouco de pesquisa, entendemos que seria o caso de colocar critérios “fallback” para essa ordenação, e na verdade isso é relativamente simples. Agora, tanto a API interna quando a API REST buscam por menu_order title ID
. Ou seja, primeiro tenta diferenciar pelo atributo de ordenação manual. Em seguida pelo título. Se o título do arquivo for igual, então cai pro ID, que por si funciona como se fosse ordem de criação.
Tudo muito bem até aí, mas tem um terceiro lugar onde esta consulta pelos anexos é feito, que é ao abrir o modal de edição/upload dos anexos. Aquela galeria faz a requisição por outro caminho, uma chamada Ajax interna da galeria de mídias do WordPress. Nós também passamos o atributo de ordem pelo menuOrder
nela, mas investigando seu código fonte, descobrimos que a galeria não só não aceita todos os parâmetros que a API padrão do WordPress aceita, como ele força uma ordenação secundária por ID quando passamos o menuOrder
. Na teoria isso não seria problema. Poderíamos manter o mesmo comportamento do nosso lado. Porém, apesar da requisição trazer sim os anexos ordenados por ID caso não tenha sido feita ordenação manual… a biblioteca em si, que monta aquele modal, está caindo em uma ordenação por data quando não consegue ordenar por menuOrder
.
Sem se perder demais nos aspectos técnicos, a consequência é que: ao abrir o modal de edição/upload de anexos, os anexos aparecem com uma ordem diferente da que você vê na página de edição ou na página pública do item. À MENOS QUE, você pegue um anexo apenas e ordene ele manualmente (arrastando e soltando). A partir deste momento, quando você faz uma única ordenação manual, ele define o atributo menuOrder
em todos os anexos restantes. Isso faz com que os três lugares apresentem a lista com a mesma ordem .
Enfim, é algo estranho no comportamento da galeria de mídias do WordPress que não sabemos como contornar. Tem bastante cara de bug inclusive, se eu conseguir investigar mais acho que justifica abrir uma issue no trac do WordPress.
Por hora espero que os ajustes feitos nesta branch que te enviei permitam pelo menos que na página de edição do item e na página pública do item você veja a mesma coisa .