jQuery( document ).ready( function( $ ) {
var file_frame;
$( document.body ).on( 'click', '.custom_media_upload', function( event ) {
var $el = $( this );
var file_target_input = $el.parent().find( '.custom_media_input' );
var file_target_preview = $el.parent().find( '.custom_media_preview' );
event.preventDefault();
// Create the media frame.
file_frame = wp.media.frames.media_file = wp.media({
// Set the title of the modal.
title: $el.data( 'choose' ),
button: {
text: $el.data( 'update' )
},
states: [
new wp.media.controller.Library({
title: $el.data( 'choose' ),
library: wp.media.query({ type: 'image' })
})
]
});
// When an image is selected, run a callback.
file_frame.on( 'select', function() {
// Get the attachment from the modal frame.
var attachment = file_frame.state().get( 'selection' ).first().toJSON();
// Initialize input and preview change.
file_target_input.val( attachment.url ).change();
file_target_preview.css({ display: 'none' }).find( 'img' ).remove();
file_target_preview.css({ display: 'block' }).append( '
' );
});
// Finally, open the modal.
file_frame.open();
});
// Media Uploader Preview
$( 'input.custom_media_input' ).each( function() {
var preview_image = $( this ).val(),
preview_target = $( this ).siblings( '.custom_media_preview' );
// Initialize image previews.
if ( preview_image !== '' ) {
preview_target.find( 'img.custom_media_preview_default' ).remove();
preview_target.css({ display: 'block' }).append( '
' );
}
});
});