Soy el desarrollador del complemento Advanced Custom Fields y espero que me puedan ayudar con un problema que estoy enfrentando.
Tengo un botón donde puedes editar una imagen. Este botón lanzará un modo de medios WP 3.5 a través de la función wp_media ().
El problema es que quiero preseleccionar una imagen para que sus detalles se carguen en el panel de la barra lateral.
Actualmente me estoy enganchando a la devolución de llamada 'abierta' y ejecuto un código que llena esta selección, sin embargo, es torpe y eficiente. Esto es lo que parece:
// _media is an object I am using
_media.frame = wp.media({
title : 'title',
multiple : false,
button : { text : 'button' }
});
// open
_media.frame.on('open',function() {
// add class
_media.frame.$el.closest('.media-modal').addClass('acf-media-modal acf-expanded');
// set selection
var selection = _media.frame.state().get('selection'),
attachment = wp.media.attachment( id );
attachment.fetch();
selection.add( attachment );
});
// Finally, open the modal
_media.frame.open();
Esto funciona bien, hasta que el usuario abra otra ventana modal, seleccione la pestaña de carga y luego use el botón de edición que he creado. Ahora el código falla completamente porque mi código se basa en que el modal está en el modo 'navegar'.
Encontré un código que cambiará el marco al modo de exploración, se ve así:
_media.frame.content.mode('browse');
Esto funciona algunas veces, pero el siguiente código falla. Como si necesitara algo de tiempo para renderizarse antes de que el archivo adjunto se pueda agregar a la selección ...
Seguramente hay una mejor manera.
Gracias por tu ayuda. Elliot
Respuestas:
Aquí está el guión:
Estoy usando la función
loadImages
en el siguiente script para cargar las imágenes adjuntas existentes a través de AJAX y luego solo paso la función con los ID de las imágenes y se abre un modal previamente poblado.Y aquí está la función php que maneja la solicitud AJAX:
Acabo de copiar el fragmento de mi marco de WordPress, espero que tenga sentido.
fuente