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?


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!


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!


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);

0

é isso que você está procurando

wp.media.editor.remove('content');
wp.media.editor.add('content');

Por favor, explique por que isso poderia resolver o problema.
fuxia
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.