Zum Erweitern: Ich möchte denselben Modalcode / dasselbe Erscheinungsbild (wie in wp.media.Modal, wp.media.FocusManager) verwenden, um ein Modal meines eigenen benutzerdefinierten Dialogfelds zu öffnen, nicht den Media Editor. In der Vergangenheit habe ich für solche Dinge Thickbox verwendet, aber wp.media.Modal scheint der Weg der Zukunft für Modals zu sein - ganz zu schweigen davon, dass es cool aussieht.
Ich habe ein bisschen an der JS-Quelle gestochert und bin zu ein paar möglichen Lösungen gekommen:
- "Leihen" Sie den Code media-views.js und verwenden Sie ihn in meinem Plugin.
- "Extend" wp.media.Modal (es ist immerhin eine Backbone-Ansicht).
- Erstellen Sie eine benutzerdefinierte Implementierung, jQueryUI usw.
- Gib einfach auf und benutze Thickbox.
Das Ausleihen scheint etwas weniger gefährlich zu sein als das Verwenden von wp.media.Model.extend ({}), aber es ist verschwenderisch. Ich bin kein großer Fan von jQueryUIs Modals, aber es würde die Arbeit erledigen. Gleichzeitig könnte ich eine benutzerdefinierte Implementierung von Modalen durchführen (oder sie auf einer anderen Bibliothek aufbauen).
Ich habe das Gefühl, ich vermisse etwas Offensichtliches: Hat jemand anderes dies durchgezogen oder ist der Modalcode der neuen Medienbibliothek "zu neu", um eine Wiederverwendung zu ermöglichen?
Antworten:
Späte Beantwortung & Bearbeitung. Haftungsausschluss: Das Folgende ist kein Code zum Kopieren und Einfügen.
Grobe Skizze
Da ich nie versucht habe, das Medien-Modal für etwas anderes zu missbrauchen, folgt hier ein kurzer Überblick, der anhand eines Teils eines Projekts skizziert wurde, an dem ich gerade arbeite. Es ist kein fertiges Beispiel, aber es sollte Sie nah genug bringen. Lesen Sie einfach die Kommentare sorgfältig durch und implementieren Sie das folgende PHP in Ihre Objekte.
PHP
In unserem Konstruktor registrieren wir unsere Skripte, fügen Meta-Boxen hinzu, die Informationen und eine Medienschaltfläche enthalten, filtern in zusätzlichen MIME-Typen (z. B. ZIP) und kümmern uns um das Speichern der zusätzlichen Daten:
Stellen Sie sicher, dass Sie den Vorgang abbrechen, wenn Sie das Skript auf einer bestimmten Seite nicht benötigen. Dies spart Speicherplatz, fordert Zeit an und hilft, Ihre Installation sauber zu halten.
Dann fügen wir die Meta Box hinzu. Innerhalb der Funktion können wir uns auf die Eigenschaft
$post
objects verlassenpost_type
, die auch für neue Posts festgelegt wird. Da wir die Rückrufe im Konstruktor bereits für die entsprechenden Kontext-Hooks registriert haben, können wir einfach den Post-Typ verwenden, der auf uns zukommt.Zusätzliche MIME-Typen
Fügen Sie einfach ein Array ein, das die Standard-MIME-Typen des Media Modal überschreibt oder ergänzt. Sie können auch andere Einstellungen hinzufügen oder überschreiben. Nur um
var_dump( $settings );
zu sehen, was der Rückruf bietet. Stellen Sie außerdem sicher, dass wir nicht den falschen Post-Typ abfangen.Rendern Sie den Inhalt
Sichere die Daten
Schließlich stellen wir sicher, dass unsere Daten ordnungsgemäß gespeichert und überprüft werden. Verwenden Sie alle
esc_*()
Funktionen, Typumwandlung, Nonces und was nicht.Letzte Anmerkung, bevor Sie zum JS-Beispiel übergehen: Der Code ist aus einem aktuellen Projekt herausgebrochen. Also wird es - wie schon erwähnt - standardmäßig nicht funktionieren! Es ist nur eine Anleitung und sonst nichts.
Javascript
Das Javascript selbst ist ziemlich einfach. Nicht. Aber wie Sie sehen, füge ich sowohl jQuery als auch das benutzerdefinierte lokalisierte Skriptobjekt in die Funktion ein. Von da an müssen Sie die Logik hinzufügen, die Sie benötigen. Die Basisumgebung für verschiedene Zustände und Rückrufe ist vorhanden und
console.log()
vorhanden.Tutorials
Dominik Schilling - der Autor des Medienmanagers WP 3.5 - hat eine Reihe von Demos für Medienmodale geschrieben. Sie können sie auf GitHub anzeigen .
quelle