Para começar, as funções básicas e substituições, tanto quanto eu sei atualmente. Pode haver soluções melhores, mas eu só tive dois dias com o 3.5:
// open modal - bind this to your button
if ( typeof wp !== 'undefined' && wp.media && wp.media.editor )
wp.media.editor.open( ##unique_id_here## );
// backup of original send function
original_send = wp.media.editor.send.attachment;
// new send function
wp.media.editor.send.attachment = function( a, b) {
console.log(b); // b has all informations about the attachment
// or whatever you want to do with the data at this point
// original function makes an ajax call to retrieve the image html tag and does a little more
};
// wp.media.send.to.editor will automatically trigger window.send_to_editor for backwards compatibility
// backup original window.send_to_editor
window.original_send_to_editor = window.send_to_editor;
// override window.send_to_editor
window.send_to_editor = function(html) {
// html argument might not be useful in this case
// use the data from var b (attachment) here to make your own ajax call or use data from b and send it back to your defined input fields etc.
}
Esta não é a resposta de trabalho completa. Você precisa definir e acompanhar seus campos de entrada sozinho, etc. Isso deve ajudá-lo a começar. Se você tiver perguntas mais concretas, basta perguntar.
E certifique-se de reatribuir as funções originais quando o script for concluído.
Retirado dos comentários:
Como posso ouvir o evento close da mesa de luz?
// add listener:
wp.media.view.Modal.prototype.on('close', function(){ console.log('triggered close'); }
Aqui está um pequeno tutorial sobre como usar o carregador de mídia WP 3.5 nas opções de temas. Foi o que eu criei e funciona perfeito para mim. Deixe-me saber se você encontrar uma solução melhor.
Aqui está como eu implementei o código nas minhas opções de tema:
Atualizar
Este código funciona apenas na página pós-edição. Para fazê-lo funcionar na página de opções de temas, você precisa adicionar
wp_enqueue_media();
fonte
Estou fazendo quase o mesmo, ainda não está pronto, mas funciona:
no php:
O javascript:
Isso permitirá que você faça o upload e envie a URL da imagem (de qualquer tamanho) para o
<input>
elemento.Estou tentando fazer isso como uma configuração e funciona. Somente o que eu preciso agora é uma maneira confiável de enviar o ID do anexo para o
<input>
fonte
Acho que @janw acertou completamente este, mas não consegui fazer uma coisa funcionar. Jan insere o botão da biblioteca de mídia usando:
e, em seguida, antecipa a ação padrão usando:
O problema que encontrei é que a inserção de um botão de mídia dessa maneira não atribui um ID de "default_featured_image_button" ao link. Na verdade, ele não adiciona nenhum ID ao link inserido. Então foi isso que fiz para fazê-lo funcionar.
Adicionei esta linha à minha função de retorno de chamada da meta box logo após o meu campo de entrada:
Enfileirei então meu arquivo jquery personalizado e o arquivo css do thickbox, também no meu arquivo functions.php, usando:
Finalmente, meu arquivo image-set.js incluiu o seguinte:
Você notará que eu usei variáveis para armazenar o nome e o ID do campo de entrada imediatamente antes do link que chama o jQuery. Dessa forma, esse código pode ser usado repetidamente na mesma página. Você só precisaria atribuir uma classe a todos os botões ou usar IDs individuais para os botões em seu jquery, como eu fiz. Espero que isso ajude alguém como a resposta de Jan me ajudou.
fonte
Sei que este é um post antigo, mas quero compartilhar minhas descobertas:
Para abrir o editor de mídia, chamamos essa função
o editor de mídia basicamente procurará o tinyMCE editor (
window.tinymce
) e, em seguida, Quicktags (window.QTags
), para transmitir o conteúdo.Para minha abordagem para obter o conteúdo, atribuai
window.QTags
um objeto personalizado, que possui uminsertContent()
método:Referencia: phpxref
fonte