Wie kann ich eine Antwort vom plUpload jQuery-Objekt erfassen, nachdem es die gewünschten Medien hochgeladen hat, und wie kann ich dieselbe Funktionalität in einer Meta-Box zum Erstellen einer Galerie verwenden?
Es gibt eine bestimmte Datei, die diese Funktionalität behandelt: /wp-includes/js/plupload/handlers.dev.js
. Diese Datei enthält alle Hooks und Trigger, die Plupload (das Drag & Drop-Multi-File-System eines Drittanbieters) mit dem Uploader verbinden.
Es gibt zwei Ereignisse, die Sie sich ansehen sollten: "FileUploaded" und "Upload Complete"
Datei hochgeladen
Denken Sie daran, dass der neue Uploader mehrere Dateien gleichzeitig hochladen kann. Wenn Sie also nach dem Hochladen jeder Datei in der Warteschlange etwas tun möchten, verwenden Sie jQuery, um eine Bindung an dieses Ereignis herzustellen.
WordPress bindet beispielsweise Folgendes:
uploader.bind('FileUploaded', function(up, file, response) {
uploadSuccess(file, response.response);
});'
Das uploadSuccess
Funktion hier verarbeitet Miniaturansichten von Bildern, ruft Meta-Anhänge vom Server ab und bindet die Schaltflächen zum Bearbeiten / Löschen an das richtige Objekt.
UploadComplete
Das UploadComplete-Ereignis wird nach allem ausgelöst in der Warteschlange fertig Upload ist. Wenn Sie einen allgemeinen Bereinigungsvorgang starten möchten, nachdem der gesamte Download abgeschlossen ist, ist dies das, woran Sie binden möchten.
WordPress bindet beispielsweise Folgendes:
uploader.bind('UploadComplete', function(up, files) {
uploadComplete();
});
Die uploadComplete
Funktion hier aktiviert nur die Schaltfläche "Galerie einfügen" auf der Seite.
Unglücklicherweise ...
... es scheint keine Möglichkeit für uns zu geben, uns an diese Ereignisse zu binden. Das uploader
Objekt befindet sich innerhalb eines Abschlusses in der handlers.js
Datei, und Plupload selbst kann nicht auf vorhandene Instanzen verweisen. Sie können keinen einfachen jQuery-Selektor verwenden, um ein benutzerdefiniertes Ereignis hinzuzufügen.
Zum einen können Sie diese benutzerdefinierten Ereignisse beliebig in Ihren eigenen Systemen verwenden. Drehen Sie einfach Ihre eigene Version vonhandlers.js
Stellen Sie einfach Datei mit Ihren eigenen Ereignissen zusammen und Sie können tun, was Sie wollen. Für den vorhandenen Uploader bleibt jedoch die vorhandene API erhalten.
Beachten Sie, dass der neue Pluploader die gleichen Methoden wie der alte Flash-Uploader aufruft. Ich vermute also, dass alle vorhandenen Hacks oder Integrationen, die Sie haben, weiter funktionieren sollten.
Testen Sie diese Annahme
Ich habe ein Plugin , das den vorhandenen Uploader verwendet, um Dateianhänge hochzuladen und die URL in einem benutzerdefinierten Metafeld anzuzeigen. Mit dem alten Uploader hat es wie durch Zauberhand geklappt, also habe ich es in WP 3.3 gestartet, um zu sehen, ob es auch mit dem neuen Uploader funktioniert .
Und das tut es!
Wenn Sie sich bereits in den Media Uploader integrieren, sollte Ihr System dennoch ohne Änderungen mit dem neuen System funktionieren.