Déclenchement d'actualisation pour le nouveau gestionnaire de médias dans 3.5

23

J'essaie de comprendre comment il est possible de «rafraîchir» la bibliothèque multimédia dans le nouveau dialogue multimédia en 3.5. J'ajoute des images d'une bibliothèque d'images externes à la bibliothèque WordPress (via un combo onglet / iFrame dans la boîte de dialogue multimédia) qui fonctionne bien, mais je dois fermer et rouvrir la boîte de dialogue afin d'afficher les images nouvellement ajoutées (qui ont a été ajouté à la bibliothèque avec succès).

Je sais qu'il y en a wp.media.editor.open()et des wp.media.editor.close()méthodes, mais je n'arrive pas à trouver un sort()ou refresh()(ou autre) dans la source. À vrai dire, le code source est une lecture assez intense et console.logn'aide apparemment pas beaucoup avec backbone.js. Des idées?

Richard Sweeney
la source
3
Une autre question à la galerie "New Media Manager: The Great Unknown" . Par le rythme, je m'attends à une documentation complète et des crochets autour de WP 3.7 ... Tous les votes positifs indiquent une communauté affamée.
brasofilo
Au lieu de la fonction refresh (), nous pouvons utiliser la combinaison des fonctions wp.media.editor.close () et wp.media.editor.open () pour obtenir la sortie souhaitée.
Vinod Dalvi
Dans le sélecteur d'images en vedette par exemple, il y a un commutateur dans la ligne 3644 de wp-includes / js / media-views.js pour savoir si la bibliothèque multimédia a été chargée ou non. Il semblerait que cela fasse référence wp.media.featuredImage.frame().views.get('.media-frame-content')[0].views.get("")[3].collection.lengthmais définir cette longueur à 0 ne fait rien.
NoBugs

Réponses:

7

La manière correcte d'actualiser le contenu du cadre, comme dans le noyau WP, est la suivante:

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

Vous devez toujours vérifier que le contenu est disponible, sinon actualisez la bibliothèque.

À votre santé!

timocouckuyt
la source
Où est-ce dans WP core?
NoBugs
Êtes-vous sûr que c'est toujours correct? Cela semble wp.media.featuredImage.frame().options.selection.resetexister mais il n'y en a pas wp.media.featuredImage.frame().collectionpar exemple.
NoBugs
4

Cela m'a pris quelques jours, mais j'ai finalement creusé suffisamment de choses pour comprendre cela:

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

On dirait qu'il doit y avoir un moyen plus simple mais ça marche pour moi en attendant!

Nicky Hajal
la source
1
semble si intuitif :) néanmoins, cela fonctionne !! JE VOUS REMERCIE!!!
Andrej
3
vient de trouver une façon "plus officielle" de le faire:, wp.media.frame.content.get('gallery').collection.props.set({ignore: (+ new Date())});dans ce cas, je rafraîchis l' galleryonglet.
Jermim bilal
2
Bien que les deux commandes déclenchent une actualisation, vous ne pouvez plus ajouter d'images dans le modal :( besoin d'une autre solution à cela
Benjamin Intal
C'est encore loin d'être une solution idéale, mais il convient de noter que la media-frame-contentclé est passée de 1 à 2:wp.media.editor.get(wpActiveEditor).views._views[".media-frame-content"][0].views._views[""][2].collection.props.set({ignore:(+(new Date()))})
Ian
Pour la raison ci-dessus, il vaut mieux utiliser la version plus générique publiée ailleurs dans cette question:wp.media.frame.content.get().collection.props.set({ignore: (+ new Date())});
Ian
1

Mise à jour 2019. J'ai trouvé une meilleure solution qui ne casse pas l'uploader:

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);
z1ad
la source
0

est ce que tu cherches

wp.media.editor.remove('content');
wp.media.editor.add('content');
Rajeev Vyas
la source
Veuillez expliquer pourquoi cela pourrait résoudre le problème.
fuxia