开放的WordPress 3.5的媒体管理器时预先选择图像(Pre-Select Images wh

2019-07-05 17:03发布

我一直在玩弄在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();
});

我的想法是,有必须是一个参数传递到框架(可能是图像的JSON对象,或者我需要创建一个事件

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

但我已经尝试过一轮两种方式和我没有在任何地方得到。

这样看来可能,为改变“特色图片”带你到图书馆与当前选定的一个 - 我只是一直不明白的核心代码尚未充分,并希望别人了!

Answer 1:

研究的核心了一下后,这里的答案是真的很简单。

监听的open事件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] : []);
    });
  }
});

这适用选择多个图像时,以及单,并假定使用上面的代码已存储在与逗号分离单个文本/隐藏字段的值。



Answer 2:

不是一个真正的答案,但有些事情我已经注意到

使用你的代码frame.open( console.log('open') )不触发的console.log。
其他frame.on('open', function() { console.log('on->open')})没有。

当寻找在后编辑页面。 (其中特色图片已设置)。 如果你打开功能IMG窗口的几件事情发生很有趣。

  1. WP做3个AJAX调用,第1和3rst包含的功能IMG ID。 第二个是一样的与您的代码。

  2. 当弹出加载功能的图像是可见/图像的其余部分之前加载。 当这些现身特色图片放在正确的顺序。

  3. 当在Firebug在DOM标签的样子,我发现了var wp.media.model.settings.post.featuredImageId持有(等待它)的特色形象价值。

希望这有助于你以某种方式。



Answer 3:

我认为那些家伙设法做到这一点: https://wordpress.stackexchange.com/questions/76125/change-the-default-view-of-media-library-in-3-5/76213#76213但是这并未”我将不起作用。 我已经得到了jQuery的在我的岗位/编辑页脚,后/新的,但,只是不为我工作:(



文章来源: Pre-Select Images when opening WordPress 3.5 media manager