Para comenzar, las funciones básicas y las anulaciones, por lo que sé actualmente, podrían haber mejores soluciones, pero solo tenía dos días con 3.5 todavía:
// 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 no es una respuesta de trabajo completa. Debe definir y realizar un seguimiento de sus campos de entrada por sí mismo, etc. Esto debería ayudarlo a comenzar. Si tiene preguntas más concretas, solo pregunte.
Y asegúrese de reasignar las funciones originales cuando termine su secuencia de comandos.
Extraído de los comentarios:
¿Cómo puedo escuchar el evento cercano de la caja de luz?
// add listener:
wp.media.view.Modal.prototype.on('close', function(){ console.log('triggered close'); }
Aquí hay un pequeño tutorial sobre cómo usar el cargador de medios WP 3.5 en las opciones de tema. Eso es lo que se me ocurrió y funciona perfecto para mí. Avísame si encuentras una solución mejor.
Así es como he implementado el código en mis opciones de tema:
Actualizar
Este código solo funciona en la página de edición posterior. Para que funcione en la página de opciones de tema, debe agregar
wp_enqueue_media();
fuente
Estoy haciendo casi lo mismo, aún no está listo, pero funciona:
en el php:
El javascript:
Esto le permitirá cargar y enviar la URL de la imagen (de cualquier tamaño) al
<input>
elemento.Estoy tratando de hacer esto como una configuración y funciona, solo lo que necesito ahora es una forma confiable de enviar la ID del archivo adjunto a
<input>
fuente
Creo que @janw lo tiene completamente correcto, pero no pude hacer que una cosa funcione. Jan inserta el botón de la biblioteca de medios usando:
y luego se adelanta a la acción predeterminada usando:
El problema con el que me encontré es que insertar un botón de medios de esta manera no asigna una identificación de "default_featured_image_button" al enlace. De hecho, no agrega ninguna identificación en el enlace insertado. Así que esto es lo que hice para que funcione.
Agregué esta línea a mi función de devolución de llamada de meta box justo después de mi campo de entrada:
Luego puse en cola mi archivo jquery personalizado y el archivo css de thickbox, también en mi archivo functions.php, usando:
Finalmente mi archivo image-set.js incluía lo siguiente:
Notarás que usé variables para almacenar el nombre y la identificación del campo de entrada que está justo antes del enlace que llama a jQuery. De esa manera, este código puede usarse repetidamente en la misma página. Solo necesitaría asignar una clase a todos los botones o usar identificadores individuales para los botones en su jquery como lo hice. Espero que esto ayude a alguien como lo hizo la respuesta de Jan.
fuente
Sé que esta es una publicación antigua, pero solo quiero compartir mis hallazgos:
Para abrir el editor de medios, llamamos a esta función
el editor de medios básicamente buscará el editor tinyMCE (
window.tinymce
), luego Quicktags (window.QTags
), para pasarle el contenido.Para mi enfoque para obtener el contenido, asigné
window.QTags
un objeto personalizado, que tiene uninsertContent()
método:Referencia: phpxref
fuente