WP Media Library/Uploader не возвращает динамический HTML/DOM
Пример взят из Display Media Uploader в собственном плагине на Wordpress 3.5:
<script type="text/javascript">
var file_frame;
jQuery('.button-secondary').live('click', function( event ){
event.preventDefault();
if ( file_frame ) {
file_frame.open();
return;
}
file_frame = wp.media.frames.file_frame = wp.media(
{
title: 'Select File',
button: {
text: jQuery( this ).data( 'uploader_button_text' )
},
multiple: false
}
);
file_frame.on('select', function() {
attachment = file_frame.state().get('selection').first().toJSON();
jQuery('#IMGsrc').val(attachment.url);
});
file_frame.open();
});
Проблема в том,
file_frame.on('select', function() {...});
не возвращает ДИНАМИЧНЫЙ HTML. Я пробовал код, как это:
jQuery(document).on('select', file_frame, function() {...});
jQuery(document).on('select', file_frame.el, function() {...});
но не работает...
2 ответа
Я боролся с тем, что, по моему мнению, было схожей проблемой. Часть проблемы заключалась в том, что при загрузке первый объект вложения пуст и вызывает ошибку.
Вот мой пример кода, который выводит HTML так, как мне нужно на моем сайте:
// Когда изображения выбраны, поместите идентификаторы в скрытое настраиваемое поле и покажите миниатюры. file_frame.on( 'select', function() {
var selection = file_frame.state().get('selection');
// Show Thumbs
var attachment_thumbs = selection.map( function( attachment ) {
attachment = attachment.toJSON();
if( attachment.id != '' ) { return '<img src="' + attachment.sizes.thumbnail.url + '" id="id-' + attachment.id + '" />'; }
}).join(' ');
$('#images-feedback').show();
$('#thumbs').html(attachment_thumbs);
});
Надеюсь это поможет!
Window.send_to_editor(html) вызывается по причинам совместимости даже в новом загрузчике, но я не думаю, что он будет работать, когда вызывается таким образом. Вы можете использовать атрибуты выбранного вами объекта и создать html-ссылку / изображение.