WordPress 3.5 benutzerdefinierter Medien-Upload für Ihre Theme-Optionen
Lesezeit: 6 Minuten
Mattpx
WordPress 3.5 wurde vor kurzem veröffentlicht, ich habe das WordPress Media Upload-System über Thickbox verwendet und window.send_to_editor für einige Optionen in meinem WordPress-Theme (Hintergründe, Logos etc…).
Aber da WordPress einen neuen Media Manager integriert hat, wollte ich diese neue Funktion nutzen, um Bilder/Dateien als benutzerdefinierte Felder hochzuladen. Also verbrachte ich den Morgen damit, einen Weg zu finden, um das gewünschte Ergebnis zu erzielen.
Ich habe mit dieser Lösung gefunden, die für einige von Ihnen nützlich sein kann. Vielen Dank, dass Sie mir Ihr Feedback zum Code oder zu Verbesserungen geben, die Sie im Sinn haben!
Wenn Sie alle Einstellungen sehen möchten, die in der attachment variabel kannst du a console.log(attachment) oder alert(attachment).
Der WordPress-Administrator verwendet noConflict, daher musste ich das $ -> jQuery ändern. Sehr hilfreich danke!
– styks
14. Dezember ’12 um 16:33
Tausend Dank für dieses knackige Beispiel! Die Übergabe einer Beitrags-ID ist so einfach wie die Übergabe als Parameter in wp.media.editor.open()
– Jos Faber
16. Dezember ’12 um 20:06
Ich frage mich, wie man die Medien-API als Abhängigkeit von einem Skript in lädt wp_enqueue_script(). ich weiß das wp_enqueue_media() gibt es, aber ich würde es vorziehen, Abhängigkeiten zu verwenden – gibt es eine Möglichkeit, dies zu tun?
– Atadj
24. Januar ’13 um 11:07
DiverseAndRemote.com
Sie gehen auf eine Weise vor, die nicht beabsichtigt war. Ihr Javascript-Code sollte wahrscheinlich so aussehen:
$('.custom_media_upload').click(function(e) {
e.preventDefault();
var custom_uploader = wp.media({
title: 'Custom Title',
button: {
text: 'Custom Button Text'
},
multiple: false // Set this to true to allow multiple files to be selected
})
.on('select', function() {
var attachment = custom_uploader.state().get('selection').first().toJSON();
$('.custom_media_image').attr('src', attachment.url);
$('.custom_media_url').val(attachment.url);
$('.custom_media_id').val(attachment.id);
})
.open();
});
Können Sie mir vorschlagen, wie ich die Medienbibliotheksoption aus dem Uploader entfernen kann?
kennt jemand eine vollständige Liste der Argumente dafür? wp.media()? Zum Beispiel hat es auch eine Bibliothek und es braucht Typ, aber ich möchte bestimmte IDs von den Auswahloptionen ausschließen.
– Ciantic
12. Dezember ’13 um 20:47
Es öffnet die Instanz 2 Mal, ich verstehe es nicht, warum ist das so? Danke
– Herr Nentu’
2. Januar ’14 um 15:16
Ich glaube nicht, dass die vollständige Liste der Argumente dokumentiert ist, aber wenn Sie möchten, können Sie sich den Code in ansehen wp-includes/js/media-views.js. Suchen Sie einfach nach “media.controller.Library =”
– DiverseAndRemote.com
22. Okt ’14 um 15:37
Xaver
Vergiss nicht zu verwenden wp_enqueue_media (neu in 3.5) wenn du nicht auf der Beitragsbearbeitungsseite bist
Um die alte Medien-Upload-Box zu verwenden, können Sie dies tun:
Ich frage mich, wie man die Medien-API als Abhängigkeit von einem Skript in lädt wp_enqueue_script(). ich weiß das wp_enqueue_media() gibt es, aber ich würde es vorziehen, Abhängigkeiten zu verwenden – gibt es eine Möglichkeit, dies zu tun? Ich suche nach Namen aller erforderlichen Bibliotheken – wie Sie es in Ihrem Beispiel mit Medienskripten vor WP3.5 tun.
Ich habe nichts gefunden, um eine benutzerdefinierte Funktion auszulösen, wenn der Editor geschlossen wird. Ich verwende das:
wp.media.editor.open();
$('.media-modal-close, .media-modal-backdrop').one('click', function(){
//do some stuff
});
oder besser:
var id = wp.media.editor.id();
var editor = wp.media.editor.get( id );
if('undefined' != typeof( editor )) editor = wp.media.editor.add( id );
if ( editor ) {
editor.on('close', function(){
//do some stuff
});
}
markieren
Ich hatte nicht viel Gelegenheit, damit zu spielen, aber für diejenigen, die das Galerie-Element nutzen möchten, sollte dieser Code Sie auf den Weg bringen.
Es ist nur ein Ausgangspunkt – es bietet nur eine durch Kommas getrennte Liste von Bild-IDs, aber das sollte ausreichen, um kreativ zu werden.
Dadurch wird das Eingabefeld mit einer durch Kommas getrennten Liste der Bild-IDs in der Reihenfolge gefüllt, in der sie im Editor festgelegt wurden (unter Verwendung der neuen Drag-and-Drop-Funktionalität).
Die Funktion erwartet, dass der Shortcode zur Platzierung im Haupteditor zurückgesendet wird, aber wir möchten dies nicht tun, also erstellen wir ein neues Objekt, das eine leere Zeichenfolge zum Einfügen zurückgibt.
Beachten Sie auch, dass dies nicht das Einfügen eines einzelnen Bildes wie oben beschrieben behandelt – es wird nur in den Post-Editor eingefügt. Versuchen Sie also, die beiden Listener zu kombinieren, oder entfernen Sie die entsprechenden Registerkarten.
BEARBEITEN
Nachdem ich einige Zeit damit verbracht habe, den Kern zu betrachten, denke ich, dass dieser ganze Prozess mit der hier beschriebenen Technik tatsächlich einfacher durchgeführt werden kann, aber wie Sie lesen werden, habe ich noch nicht herausgefunden, wie Sie die Bilder beim erneuten Öffnen vorselektieren Medien-Manager.
.
4796200cookie-checkWordPress 3.5 benutzerdefinierter Medien-Upload für Ihre Theme-Optionenyes
Der WordPress-Administrator verwendet noConflict, daher musste ich das $ -> jQuery ändern. Sehr hilfreich danke!
– styks
14. Dezember ’12 um 16:33
Tausend Dank für dieses knackige Beispiel! Die Übergabe einer Beitrags-ID ist so einfach wie die Übergabe als Parameter in wp.media.editor.open()
– Jos Faber
16. Dezember ’12 um 20:06
Ich frage mich, wie man die Medien-API als Abhängigkeit von einem Skript in lädt
wp_enqueue_script()
. ich weiß daswp_enqueue_media()
gibt es, aber ich würde es vorziehen, Abhängigkeiten zu verwenden – gibt es eine Möglichkeit, dies zu tun?– Atadj
24. Januar ’13 um 11:07