我正在尝试从新媒体上传器的默认实例中选择...
我对它默认显示的方式感到满意,所以我不使用: -
file_frame = wp.media.frames.file_frame = wp.media(
{
title: 'Select File',
button: {
text: jQuery( this ).data( 'uploader_button_text' )
},
multiple: false
});
只需
wp.media.editor.open();
所以这显然不起作用
attachment = file_frame.state().get('selection').first().toJSON();
但这也不是
wp.media.editor.state().get('selection').first().toJSON();
或者
wp.media.state().get('selection').first().toJSON();
那么我应该使用的代码是什么?
答案 0 :(得分:1)
您可以尝试这样的事情(对于多选)...不保证它有效:
var selection = wp.media.editor.state().get('selection');
var attachment_ids = selection.map( function( attachment ) {
attachment = attachment.toJSON();
return attachment.id;
}).join();
答案 1 :(得分:1)
从这里改编答案:https://wordpress.stackexchange.com/questions/87357/wordpress-media-manager-3-5-default-link-to
扩展render
的{{1}}功能,然后可以访问wp.media.view.Settings.AttachmentDisplay
:
this.controller.state().get('selection')
答案 2 :(得分:0)
好的,我有一个hacky解决方案,直到有人希望可以发布如何正确地做到这一点......
jQuery('.media-modal .type-image').on('click',function(index, element) {
var thisCollection = wp.media.model.Query.all._byCid;
setTimeout(function() { //we need this becuse the details area is not generated until after the click
var thisEditUrl = jQuery('.details .edit-attachment').attr('href');
var attachId = thisEditUrl.match(/post=([^&]+)/)[1];
var attachmentAtts = '';
jQuery.each(thisCollection, function(index,item) {
if(this.id == attachId)
attachmentAtts = this.attributes;
});
},500);
});
由于我们不知道.details区域需要多长时间才能填充它,因此它不理想,因为我们不知道需要多长时间才能填充。但是经过一天半的尝试后我就无法解决任何其他问题了。
希望那里有人知道如何做到这一点;)
答案 3 :(得分:0)
我知道这是一个旧帖子,但我在谷歌搜索中偶然发现了上传多个文件时获取所有附件ID。
我略微适应了Adal的答案,这完美无缺:
var selection = wp.media.state().get('selection');
var attachment_ids = selection.map( function( attachment ) {
attachment = attachment.toJSON();
return attachment.id;
}).join();
只是添加此作为参考,因为Adal当时没有得到关于答案的反馈(而且我还没有足够的声誉来发表评论)。