我一直在和WordPress的新媒体经理一起玩,并且玩得很开心,但已经达到了我的头撞墙的程度.
我有一个自定义元框,我想存储一些图像(这是一个隐藏的输入,我现在正在存储他们的ID,但可能同样是图像对象),然后进行AJAX调用以显示一些缩略图,我随后使其可拖动,以便用户可以重新排序(不一定只是一些背景相关).
我的问题是,当我打开媒体管理器时,没有选择图像,所以如果用户想要编辑图库中的图片,他们需要再次选择它们.
我想弄清楚的是,如何打开媒体管理器,当前图像通过,所以它们是预先选定的.
所以,广泛地说,我的代码看起来像这样
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();
});
Run Code Online (Sandbox Code Playgroud)
我的想法是必须有一个参数传递到帧中(可能是图像的JSON对象,或者我需要创建一个事件
frame.on('open', function() {
// Set selected images
}
Run Code Online (Sandbox Code Playgroud)
但是我已经尝试了两种方式而且没有到达任何地方.
这似乎是可能的,因为更改"特色图像"会将您带到库中并选择当前的库 - 我刚刚无法完全理解核心代码并希望其他人拥有!
Mar*_*ark 41
在研究了核心之后,这里的答案非常简单.
侦听对象的打开事件wp.media,获取状态,使用您的id创建附件对象并将其添加到选择中.
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] : []);
});
}
});
Run Code Online (Sandbox Code Playgroud)
这在选择多个图像以及单个图像时有效,并假设使用上面的代码将值存储在单个文本/隐藏字段中,并使用逗号分隔.
| 归档时间: |
|
| 查看次数: |
10589 次 |
| 最近记录: |