Para expandir: me gustaría utilizar el mismo código / apariencia modal (como se usa en wp.media.Modal, wp.media.FocusManager) para abrir un modal de mi propio diálogo personalizado, no el Editor de medios. En el pasado, utilicé thickbox para este tipo de cosas, pero wp.media.Modal parece ser el camino del futuro para los modales, sin mencionar que se ve genial.
He buscado un poco en la fuente JS y he llegado a un par de posibles soluciones:
- "Pide prestado" el código media-views.js y úsalo en mi plugin.
- "Extender" wp.media.Modal (es una Vista Backbone, después de todo).
- Cree una implementación personalizada, jQueryUI, etc.
- Solo ríndete y usa thickbox.
Pedir prestado parece un poco menos peligroso que usar wp.media.Model.extend ({}), pero es un desperdicio. No soy un gran admirador de los modales de jQueryUI, pero haría el trabajo. Al mismo tiempo, podría hacer una implementación personalizada de modales (o basarlo en otra biblioteca).
Siento que me falta algo obvio: ¿Alguien más ha logrado esto o el nuevo código modal de la biblioteca multimedia es "demasiado nuevo" para permitir su reutilización?
Respuestas:
Respuesta tardía y edición. Descargo de responsabilidad: lo siguiente no es un código de copiar y pegar togo.
Bosquejo áspero
Como nunca intenté hacer un mal uso del modo de medios para otra cosa, aquí hay una breve descripción, esbozada separando una parte de un proyecto en el que estoy actualmente. Es no una lista para ir ejemplo, pero debe traer lo suficientemente cerca. Simplemente lea los comentarios cuidadosamente e implemente el siguiente PHP en sus objetos.
PHP
En nuestro constructor registramos nuestros scripts, agregamos meta cuadros que contienen información y un botón de medios, filtramos tipos MIME adicionales (por ejemplo, ZIP) y nos preocupamos por guardar los datos adicionales:
Asegúrese de abortar si no necesita ese script en una página en particular. Esto ahorra memoria, tiempo de solicitud y ayuda a mantener limpia su instalación.
Luego agregamos el cuadro meta. Dentro de la función, podemos confiar en la propiedad de los
$post
objetospost_type
, que también se establecerá para nuevas publicaciones. Como ya registramos las devoluciones de llamada en el constructor en los enlaces contextuales apropiados, simplemente podemos tomar cualquier tipo de publicación que aparezca.Tipos MIME adicionales
Simplemente agregue una matriz que anule o agregue los tipos MIME predeterminados del Media Modal. También puede agregar o anular otras configuraciones. Solo
var_dump( $settings );
para ver qué proporciona la devolución de llamada. También asegúrese de no interceptar el tipo de publicación incorrecto.Renderiza el contenido
Guardar los datos
Finalmente, nos aseguramos de que nuestros datos se guarden correctamente y se verifiquen. Utiliza todas las
esc_*()
funciones, typecasting, nonces y lo que no.Nota final, antes de dirigirse al ejemplo de JS: el código está separado de un proyecto actual. Por lo tanto, como ya se mencionó, ¡no funcionará por defecto! Es solo una guía y nada más.
Javascript
El javascript en sí es bastante sencillo. No. Pero como puede ver, estoy inyectando tanto jQuery como el objeto de script localizado personalizado en la función. A partir de ahí, tendrás que agregar cualquier lógica que necesites. Se proporcionan los entornos básicos para diferentes estados y devoluciones de llamada, y
console.log()
están presentes.Tutoriales
Dominik Schilling, autor del administrador de medios de WP 3.5, ha escrito un conjunto de demos para modales de medios. Puedes verlos en GitHub .
fuente