Atualização do acionador para o novo gerenciador de mídia na versão 3.5

23

Estou tentando descobrir como é possível 'atualizar' a biblioteca de mídia no diálogo de nova mídia na versão 3.5. Estou adicionando imagens de uma biblioteca de imagens externa à biblioteca do WordPress (por meio de uma combinação de tab / iFrame no diálogo de mídia) que funciona bem, mas preciso fechar e reabrir o diálogo para mostrar as imagens recém-adicionadas (que possuem foi adicionado com sucesso à biblioteca).

Eu sei que existem wp.media.editor.open()e wp.media.editor.close()métodos, mas não consigo encontrar um sort()ou refresh()(ou o que seja) na fonte. Verdade seja dita, o código fonte é uma leitura bastante intensa e console.logaparentemente não ajuda muito com o backbone.js. Alguma ideia?

Richard Sweeney
fonte
3
Mais uma pergunta à galeria "New Media Manager: The Great Unknown" . Pelo ritmo, espero que a documentação completa fique em torno do WP 3.7 ... Todos os votos positivos indicam uma comunidade faminta.
Brasofilo 12/02
Em vez da função refresh (), podemos usar a combinação das funções wp.media.editor.close () e wp.media.editor.open () para obter a saída desejada.
Vinod Dalvi
No seletor de imagens em destaque, por exemplo, há uma opção na linha 3644 do wp-includes / js / media-views.js para saber se a biblioteca de mídia foi carregada ou não. Parece referenciar, wp.media.featuredImage.frame().views.get('.media-frame-content')[0].views.get("")[3].collection.lengthmas definir esse comprimento para 0 não faz nada.
NoBugs

Respostas:

7

A maneira correta de atualizar o conteúdo do quadro, conforme encontrado no núcleo do WP, é a seguinte:

if(wp.media.frame.content.get()!==null){
   wp.media.frame.content.get().collection.props.set({ignore: (+ new Date())});
   wp.media.frame.content.get().options.selection.reset();
}else{
   wp.media.frame.library.props.set({ignore: (+ new Date())});
}

Você deve sempre verificar se o conteúdo está disponível; caso contrário, atualize a biblioteca.

Felicidades!

timocouckuyt
fonte
Onde isso está no núcleo do WP?
NoBugs
Tem certeza de que isso ainda está correto? Parece wp.media.featuredImage.frame().options.selection.resetexistir, mas não existe, wp.media.featuredImage.frame().collectionpor exemplo.
NoBugs
4

Demorei alguns dias, mas finalmente descobri o suficiente para entender isso:

wp.media.editor.get(wpActiveEditor).views._views[".media-frame-content"][0].views._views[""][1].collection.props.set({ignore:(+(new Date()))})

Parece que deve haver uma maneira mais fácil, mas isso funciona para mim enquanto isso!

Nicky Hajal
fonte
1
parece tão intuitivo :), no entanto, isso funciona! OBRIGADO!!!
Andrej
3
acabei de encontrar uma maneira "mais oficial" de fazer isso: wp.media.frame.content.get('gallery').collection.props.set({ignore: (+ new Date())});neste caso, estou atualizando a galleryguia.
Jermim bilal
2
Embora ambos os comandos fazem accionar uma actualização, depois você não pode adicionar imagens no modal :( necessidade outra solução para este
Benjamin Intal
Este ainda é um longe de uma solução ideal, mas vale a pena notar a media-frame-contentchave foi alterado de 1 a 2:wp.media.editor.get(wpActiveEditor).views._views[".media-frame-content"][0].views._views[""][2].collection.props.set({ignore:(+(new Date()))})
Ian
Por esta razão você é melhor fora de usar a versão mais genérica postado em outro lugar nesta questão:wp.media.frame.content.get().collection.props.set({ignore: (+ new Date())});
Ian
1

Atualização de 2019. Encontrei uma solução melhor que não quebra o remetente:

wp.media.frame.on('open', function() {
    if (wp.media.frame.content.get() !== null) {          
        // this forces a refresh of the content
        wp.media.frame.content.get().collection._requery(true);

        // optional: reset selection
        wp.media.frame.content.get().options.selection.reset();
    }
}, this);
z1ad
fonte
0

é isso que você está procurando

wp.media.editor.remove('content');
wp.media.editor.add('content');
Rajeev Vyas
fonte
Por favor, explique por que isso poderia resolver o problema.
fuxia