web-dev-qa-db-ja.com

3.5で新しいメディアマネージャの更新をトリガする

3.5の新しいメディアダイアログで、メディアライブラリを「更新」する方法について説明します。私は外部メディアライブラリからWordPressライブラリにメディアダイアログのタブ/ iFrameコンボを通して画像を追加していますが、新しく追加された画像を表示するにはダイアログを閉じて再度開く必要があります(これは_)haveライブラリに追加されました。

私はwp.media.editor.open()wp.media.editor.close()メソッドがあることを知っています、しかし私はソースでsort()refresh()(あるいは何でも)を見つけることがどうにもできません。実のところ、ソースコードはかなり熱心に読んでいて、console.logはbackbone.jsにはあまり役立たないようです。何か案は?

23
Richard Sweeney

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())});
}

コンテンツが利用可能であることを常に確認する必要があります。そうでない場合はライブラリを更新します。

乾杯!

7
timocouckuyt

数日かけて私を連れて行ったが、私はついにこれを理解するのに十分なものを通して私の道を掘った。

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

もっと簡単な方法がなければならないように思えますが、それはそれまでの間私のために働きます!

4
Nicky Hajal

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);
1
z1ad

それはあなたが探しているものです。

wp.media.editor.remove('content');
wp.media.editor.add('content');
0
Rajeev Vyas