触发3.5中新媒体管理器的刷新


23

我试图弄清楚如何在3.5版的新媒体对话中“刷新”媒体库。我是从外部图像库WordPress的库添加图像(通过媒体对话选项卡/ iFrame的组合),它工作正常,但我为了显示新加入的图像关闭并重新打开对话(其中已成功添加到库中)。

我知道有wp.media.editor.open()wp.media.editor.close()方法,但是我无法设法在源代码中找到sort()refresh()(或其他)。实话实说,源代码是相当精读的,并且console.log似乎对ebone.js并没有多大帮助。有任何想法吗?


3
画廊的另一个问题“新媒体管理器:大未知”。以它的节奏,我希望能看到WP 3.7的完整文档和说明。
brasofilo

可以使用wp.media.editor.close()和wp.media.editor.open()函数的组合来代替refresh()函数,以实现所需的输出。
Vinod Dalvi

例如,在featured-image-picker中,wp-includes / js / media-views.js行3644中有一个开关,用于确定是否已加载媒体库。似乎正在引用,wp.media.featuredImage.frame().views.get('.media-frame-content')[0].views.get("")[3].collection.length但是将该长度设置为0并没有任何作用。
NoBugs 2015年

Answers:


7

WP核心中提供的刷新框架内容的正确方法如下:

if(wp.media.frame.content.get()!==null){
   wp.media.frame.content.get().collection.props.set({ignore: (+ new Date())});
   wp.media.frame.content.get().options.selection.reset();
}else{
   wp.media.frame.library.props.set({ignore: (+ new Date())});
}

您应该始终检查内容是否可用,否则请刷新库。

干杯!


WP核心在哪里?
NoBugs 2015年

您确定这仍然正确吗?似乎wp.media.featuredImage.frame().options.selection.reset存在,但没有wp.media.featuredImage.frame().collection例子。
NoBugs 2015年

4

花了我几天的时间,但我最终还是想尽办法解决这个问题:

wp.media.editor.get(wpActiveEditor).views._views[".media-frame-content"][0].views._views[""][1].collection.props.set({ignore:(+(new Date()))})

似乎必须有一种更简单的方法,但这同时对我有用!


1
似乎很直观:)尽管如此,它仍然有效!!谢谢!!!
Andrej 2013年

3
刚刚找到了一种“更正式”的方法:wp.media.frame.content.get('gallery').collection.props.set({ignore: (+ new Date())});,在这种情况下,我正在刷新gallery标签。
Jermim bilal 2014年

2
虽然两个命令都触发刷新,但是之后您将无法再在模式中添加图像:(需要另一种解决方案
Benjamin Intal 2014年

这仍然不是理想的解决方案,但是值得注意的是media-frame-content密钥已从1更改为2:wp.media.editor.get(wpActiveEditor).views._views[".media-frame-content"][0].views._views[""][2].collection.props.set({ignore:(+(new Date()))})
Ian

由于上述原因,您最好使用此问题中其他地方发布的更通用的版本:wp.media.frame.content.get().collection.props.set({ignore: (+ new Date())});
Ian

1

2019更新。我找到了一个不会破坏上传器的更好的解决方案:

wp.media.frame.on('open', function() {
    if (wp.media.frame.content.get() !== null) {          
        // this forces a refresh of the content
        wp.media.frame.content.get().collection._requery(true);

        // optional: reset selection
        wp.media.frame.content.get().options.selection.reset();
    }
}, this);

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.