Atualize o wp.media após a binding ajax

Eu estou construindo um plugin onde eu adiciono uma guia ao gerenciador de mídia e posso adicionar coisas de outra fonte. Eu adiciono a guia com isso, que gera um iframe:

add_filter('media_upload_tabs', 'add_myUpload_tab'); function add_myUpload_tab($tabs) { $tabs['myTab'] = "My tab"; Return $tabs; } add_action('media_upload_myTab', 'add_myUpload_save_page'); function add_myUpload_save_page() { wp_iframe( 'myTab_save_frame' ); } function myTab_save_frame() { echo media_upload_header(); ?><?php /*** More code below ***/ } 

Então, em suma, há um iframe no iframe. 🙂 O códice wp teve um iframe no exemplo, mas eu sei que funciona sem ele. Qualquer como.

Quando eu toco no meu iframe e isso pressiona um botão, esta página no iframe envia uma mensagem. No “Mais código abaixo” escrevi acima, eu tenho esse código:

  window.addEventListener('message', function(event) { //Setup variables var answer = event.data, wp = parent.wp; answer.url = answer.url.replace(/\.\w+$/ig,''); var data = { 'action': 'add_my_image', 'file': answer.url }; jQuery.post(ajaxurl, data, function(response) { alert('My image was uploaded'); /** From here and i below I want to do my wp.media stuff **/ }); });  

E sim, eu estou ciente de que não estou enviando um nonce. Isso é apenas para testes. Tudo funciona. O que eu agora quero alcançar é obter o wp.media para atualizar a biblioteca na guia “Adicionar mídia” -> “biblioteca”. E é aqui que eu falho.

Encontrei este tópico, mas nada aqui realmente ajuda. Como você pode ver, desde que eu estou no wp_iframe eu declarei wp como parent.wp para chamar o material do wp.media.

Até agora, consegui mudar o estado para exibir a biblioteca, mas não atualizado. Posso fazer isso com:

 wp.media.frame.setState('insert'); 

Mas o estranho é que, depois disso, não há mais js em execução. Se eu, por exemplo, adicione a linha console.log (‘Olá mundo’); Após esta linha, o console está em silêncio.

Por isso, eu suspeito que eu tenho que atualizá-lo antes de configurar o estado?

Qualquer idéia de como selecionar outro quadro / estado / guia (a biblioteca um), atualizá-lo e (se possível – não necessário) mudar para ele?

Solutions Collecting From Web of "Atualize o wp.media após a binding ajax"

Então, eu segui seus links e isso está funcionando para mim. Este teste funciona da mesma forma para os meus backbacks de upload, então espero que ele funcione para você.

No iframe

 function myTab_save_frame() { global $redir_tab; $redir_tab = 'mytab'; media_upload_header(); ?>   < ?php }