Aktualisierung für neuen Medienmanager in 3.5 auslösen


23

Ich versuche herauszufinden, wie es möglich ist, die Medienbibliothek im neuen Mediendialog in 3.5 zu aktualisieren. Ich füge der WordPress-Bibliothek Bilder aus einer externen Bildbibliothek hinzu (über eine Registerkarte / iFrame-Kombination im Mediendialog), was in Ordnung ist, aber ich muss den Dialog schließen und erneut öffnen, um die neu hinzugefügten Bilder anzuzeigen (die haben) erfolgreich in die Bibliothek aufgenommen worden).

Ich weiß, es gibt wp.media.editor.open()und wp.media.editor.close()Methoden, aber ich kann nicht ganz ein sort()oder refresh()(oder was auch immer) in der Quelle finden. Um ehrlich zu sein, der Quellcode liest sich ziemlich intensiv und console.logscheint bei backbone.js nicht viel zu helfen. Irgendwelche Ideen?


3
Noch eine Frage zur Galerie "New Media Manager: The Great Unknown" . Im Rhythmus erwarte ich vollständige Dokumentation und Hooks für WP 3.7 ... Alle positiven Stimmen deuten auf eine hungrige Community hin.
Brasofilo

Anstelle der refresh () - Funktion können wir eine Kombination der Funktionen wp.media.editor.close () und wp.media.editor.open () verwenden, um die gewünschte Ausgabe zu erzielen.
Vinod Dalvi

In der ausgewählten Bildauswahl gibt es zum Beispiel einen Schalter in der Zeile 3644 von wp-includes / js / media-views.js, der angibt, ob eine Medienbibliothek geladen wurde oder nicht. Es scheint sich um eine Referenz zu handeln, wp.media.featuredImage.frame().views.get('.media-frame-content')[0].views.get("")[3].collection.lengthaber wenn Sie diese Länge auf 0 setzen, geschieht nichts.
NoBugs

Antworten:


7

Die korrekte Art, den Inhalt des Frames zu aktualisieren, wie im WP-Kern zu finden, ist wie folgt:

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

Sie sollten immer überprüfen, ob der Inhalt verfügbar ist, andernfalls aktualisieren Sie die Bibliothek.

Prost!


Wo ist das in WP Core?
NoBugs

Sind Sie sicher, dass dies noch korrekt ist? Es scheint wp.media.featuredImage.frame().options.selection.resetvorhanden zu sein, aber es gibt kein wp.media.featuredImage.frame().collectionBeispiel.
NoBugs

4

Hat ein paar Tage gedauert, aber ich habe mich endlich so weit durchgearbeitet, dass ich das herausgefunden habe:

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

Es scheint, dass es einen einfacheren Weg geben muss, aber das funktioniert in der Zwischenzeit für mich!


1
scheint so intuitiv :) trotzdem funktioniert das !! DANKE DIR!!!
Andrej

3
wp.media.frame.content.get('gallery').collection.props.set({ignore: (+ new Date())});Ich habe gerade einen "offizielleren" Weg gefunden: In diesem Fall aktualisiere ich den galleryTab.
Jermim Bilal

2
Während beide Befehle eine Aktualisierung auslösen, können Sie anschließend keine Bilder mehr im Modal hinzufügen :( Benötigen Sie eine andere Lösung dafür
Benjamin Intal

Dies ist noch lange keine ideale Lösung, aber es ist erwähnenswert, dass der media-frame-contentSchlüssel von 1 auf 2 geändert wurde:wp.media.editor.get(wpActiveEditor).views._views[".media-frame-content"][0].views._views[""][2].collection.props.set({ignore:(+(new Date()))})
Ian

Aus dem oben genannten Grund ist es besser, die allgemeinere Version zu verwenden, die an anderer Stelle in dieser Frage veröffentlicht wurde:wp.media.frame.content.get().collection.props.set({ignore: (+ new Date())});
Ian,

1

Update 2019. Ich habe eine bessere Lösung gefunden, die den Uploader nicht kaputt macht:

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

0

ist es, wonach du suchst

wp.media.editor.remove('content');
wp.media.editor.add('content');

Bitte erläutern Sie, warum dies das Problem lösen könnte.
Fuxia
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.