Para expandir: eu gostaria de utilizar o mesmo código / aparência modal (usado em wp.media.Modal, wp.media.FocusManager) para abrir um modal da minha própria caixa de diálogo personalizada, não do Editor de Mídia. No passado, eu usei o thickbox para esse tipo de coisa, mas o wp.media.Modal parece ser o caminho do futuro para os modais - sem mencionar que parece legal.
Eu cutuquei um pouco a fonte JS e cheguei a algumas soluções possíveis:
- "Empreste" o código media-views.js e use-o no meu plugin.
- "Estenda" wp.media.Modal (afinal, é uma exibição de backbone).
- Crie uma implementação customizada, jQueryUI, etc.
- Apenas desista e use o thickbox.
O empréstimo parece um pouco menos perigoso do que usar wp.media.Model.extend ({}), mas é um desperdício. Eu não sou um grande fã dos modais do jQueryUI, mas faria o trabalho. Ao mesmo tempo, eu poderia fazer uma implementação personalizada de modais (ou baseá-la em outra biblioteca).
Parece que estou perdendo algo óbvio: mais alguém conseguiu isso ou o novo código modal da biblioteca de mídia é "novo demais" para permitir a reutilização?
Respostas:
Resposta tardia e edição. Isenção de responsabilidade: O código a seguir não é de copiar e colar.
Esboço áspero
Como eu nunca tentei usar mal o modal de mídia para mais nada, aqui está uma breve visão geral, esboçada ao interromper uma parte de um projeto em que estou atualmente. É não um pronto para ir exemplo, mas deve trazê-lo perto o suficiente. Basta ler os comentários com atenção e implementar o seguinte PHP em seus objetos.
PHP
Em nosso construtor, registramos nossos scripts, adicionamos meta boxes que contêm informações e um botão de mídia, filtramos tipos MIME adicionais (por exemplo, ZIP) e nos preocupamos em salvar os dados adicionais:
Anule se não precisar desse script em uma página específica. Isso economiza memória, solicita tempo e ajuda a manter sua instalação limpa.
Em seguida, adicionamos a caixa meta. Dentro da função, podemos confiar na propriedade de
$post
objetospost_type
, que também será definida para novas postagens. Como já registramos os retornos de chamada no construtor nos ganchos contextuais apropriados, podemos simplesmente aceitar qualquer tipo de post que aparecer.Tipos MIME adicionais
Simplesmente jogue uma matriz que substitua ou adicione aos tipos MIME padrão do Media Modal. Você também pode adicionar ou substituir outras configurações. Apenas
var_dump( $settings );
para ver o que o retorno de chamada fornece. Verifique também se não interceptamos o tipo de postagem errado.Renderizar o conteúdo
Salve os dados
Finalmente, garantimos que nossos dados sejam salvos corretamente e serão verificados. Use todas as
esc_*()
funções, tipecasting, nonces e quais não.Nota final, antes de seguir para o exemplo do JS: O código está quebrado em um projeto atual. Portanto, como já mencionado, ele não funcionará por padrão! É apenas um guia e nada mais.
Javascript
O javascript em si é bastante simples. Não. Mas como você pode ver, estou injetando o jQuery e o objeto de script localizado personalizado na função. A partir daí, você terá que adicionar qualquer lógica que possa precisar. O ambiente básico para diferentes estados e retornos de chamada é fornecido
console.log()
es estão presentes.Tutoriais
Dominik Schilling - o autor do gerenciador de mídia WP 3.5 - escreveu um conjunto de demos para os modais de mídia. Você pode vê-los no GitHub .
fonte