Attivazione dell'aggiornamento per il nuovo media manager in 3.5


23

Sto cercando di capire come sia possibile "aggiornare" la libreria multimediale nel dialogo sui nuovi media in 3.5. Sto aggiungendo immagini da una libreria di immagini esterna alla libreria di WordPress (tramite una combinazione tab / iFrame nella finestra di dialogo multimediale) che funziona bene, ma devo chiudere e riaprire il dialogo per mostrare le immagini appena aggiunte (che hanno stato pubblicato correttamente nella libreria).

So che ci sono wp.media.editor.open()e wp.media.editor.close()metodi, ma non riesco abbastanza a trovare un sort()o refresh()(o qualunque cosa) nella fonte. A dire il console.logvero , il codice sorgente è una lettura piuttosto intensa e apparentemente non aiuta molto con backbone.js. Qualche idea?


3
Un'altra domanda alla galleria "New Media Manager: The Great Unknown" . A giudicare dal ritmo, mi aspetto una documentazione completa e agganci attorno al WP 3.7 ... Tutti i voti positivi indicano una comunità affamata.
brasofilo,

Invece della funzione refresh (), possiamo usare la combinazione della funzione wp.media.editor.close () e wp.media.editor.open () per ottenere l'output desiderato.
Vinod Dalvi,

Nel selettore di immagini in evidenza, ad esempio, c'è un passaggio nella riga 3644 di wp-Includes / js / media-views.js per sapere se è stata caricata o meno la libreria multimediale. Sembrerebbe fare riferimento wp.media.featuredImage.frame().views.get('.media-frame-content')[0].views.get("")[3].collection.lengthma impostare quella lunghezza su 0 non fa nulla.
NoBugs,

Risposte:


7

Il modo corretto di aggiornare il contenuto del frame, come si trova nel core WP, è il seguente:

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

Dovresti sempre verificare che il contenuto sia disponibile, altrimenti aggiorna la libreria.

Saluti!


Dov'è questo nel core di WP?
NoBugs,

Sei sicuro che sia ancora corretto? Sembra che wp.media.featuredImage.frame().options.selection.resetesista ma non ce n'è wp.media.featuredImage.frame().collectionper esempio.
NoBugs,

4

Mi ci sono voluti un paio di giorni ma alla fine ho scavato abbastanza cose per capirlo:

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

Sembra che ci debba essere un modo più semplice, ma nel frattempo funziona per me!


1
sembra così intuitivo :) tuttavia, funziona !! GRAZIE!!!
Andrej,

3
wp.media.frame.content.get('gallery').collection.props.set({ignore: (+ new Date())});ho appena trovato un modo "più ufficiale" per farlo: in questo caso sto aggiornando la galleryscheda.
Jermim bilal,

2
Mentre entrambi i comandi attivano un aggiornamento, in seguito non è più possibile aggiungere immagini nel modale :( è necessaria un'altra soluzione a questo
Benjamin Intal,

Questa è ancora una soluzione tutt'altro che ideale, ma vale la pena notare che la media-frame-contentchiave è cambiata da 1 a 2:wp.media.editor.get(wpActiveEditor).views._views[".media-frame-content"][0].views._views[""][2].collection.props.set({ignore:(+(new Date()))})
Ian

Per la ragione di cui sopra, è meglio usare la versione più generica pubblicata altrove in questa domanda:wp.media.frame.content.get().collection.props.set({ignore: (+ new Date())});
Ian

1

Aggiornamento 2019. Ho trovato una soluzione migliore che non rompe l'autore del caricamento:

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

è quello che stai cercando

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

Spiega perché ciò potrebbe risolvere il problema.
fuxia
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.