Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pre-Select Images when opening WordPress 3.5 media manager

I've been playing around with the new media manager in WordPress and had some fun with it, but have reached the point where I'm banging my head against a wall.

I have a custom meta box that I'd like to store some images in (well it's a hidden input and I'm currently storing their ID's, but could equally be the image objects), then making an AJAX call to show some thumbnails, which I have subsequently made draggable so users can reorder (not necessarily relevant just some background).

My problem is that when I open the media manager, no images are selected, so if a user wants to edit the pictures in their gallery they need to select them all again.

What I'm trying to figure out, is how do I open the media manager with the current images passed through so they are pre-selected.

So, broadly, my code looks like this

jQuery('#myButton').click(function(e) {   e.preventDefault();   frame = wp.media({     title : 'My Gallery Title',     multiple : true,     library : { type : 'image'},     button : { text : 'Insert' },   });   frame.on('close',function() {     // get selections and save to hidden input plus other AJAX stuff etc.   }   frame.open(); }); 

My thought is that there must be either a parameter to pass into the frame (probably a JSON object of the images, or I need to create an event for

frame.on('open', function() {   // Set selected images } 

But I have tried both ways round and am not getting anywhere.

It would appear possible, as changing the 'Featured Image' takes you to the library with the current one selected - I've just been unable to understand the core code sufficiently yet and hope someone else has !

like image 301
Mark Avatar asked Dec 18 '12 15:12

Mark


People also ask

How do I select multiple images in WordPress?

when selecting multiple images it force the user to click shift/ctrl and image click to select all needed images (which is ok for desktop).

How do I edit images in WordPress media library?

Editing Images in the WordPress Media LibraryClick on an image, then click the Edit Image button. Now, you can crop, rotate, flip or scale the image. For example, you can rescale this image and then click the Save button. Now, click the Update button.


1 Answers

After studying the core for a bit, the answer here is really quite straightforward.

Listen for the open event of the wp.media object, grab the state, create attachment objects with your id's and add them to the selection.

frame.on('open',function() {   var selection = frame.state().get('selection');   var ids_value = jQuery('#my_field_id').val();    if(ids_value.length > 0) {     var ids = ids_value.split(',');      ids.forEach(function(id) {       attachment = wp.media.attachment(id);       attachment.fetch();       selection.add(attachment ? [attachment] : []);     });   } }); 

This works when selecting multiple images as well as single and assumes that using the code above you have stored the values in a single text/hidden field with comma separation.

like image 144
Mark Avatar answered Sep 25 '22 17:09

Mark