Ich bin der Entwickler des Advanced Custom Fields-Plugins und hoffe, dass Sie mir bei einem Problem helfen können.
Ich habe eine Schaltfläche, über die Sie ein Bild bearbeiten können. Diese Schaltfläche startet ein WP 3.5-Medienmodal über die Funktion wp_media ().
Das Problem ist, dass ich ein Bild im Voraus auswählen möchte, damit dessen Details in das Seitenleistenfenster geladen werden.
Gegenwärtig bin ich mit dem 'offenen' Rückruf verbunden und führe einen Code aus, der diese Auswahl auffüllt, der jedoch klobig und ineffizient ist. So sieht es aus:
// _media is an object I am using
_media.frame = wp.media({
title : 'title',
multiple : false,
button : { text : 'button' }
});
// open
_media.frame.on('open',function() {
// add class
_media.frame.$el.closest('.media-modal').addClass('acf-media-modal acf-expanded');
// set selection
var selection = _media.frame.state().get('selection'),
attachment = wp.media.attachment( id );
attachment.fetch();
selection.add( attachment );
});
// Finally, open the modal
_media.frame.open();
Dies funktioniert einwandfrei, bis der Benutzer ein anderes modales Fenster öffnet, die Registerkarte zum Hochladen auswählt und dann die von mir erstellte Schaltfläche zum Bearbeiten verwendet. Jetzt schlägt der Code vollständig fehl, da mein Code darauf angewiesen ist, dass sich das Modal im Durchsuchen-Modus befindet.
Ich habe einen Code gefunden, der den Frame in den Browse-Modus wechselt. Er sieht folgendermaßen aus:
_media.frame.content.mode('browse');
Das funktioniert manchmal, aber dann schlägt der folgende Code fehl. Wie es einige Zeit braucht, um zu rendern, bevor der Anhang zur Auswahl hinzugefügt werden kann ....
Sicher gibt es einen besseren Weg.
Danke für Ihre Hilfe. Elliot
Antworten:
Hier ist das Skript:
Ich benutze die Funktion
loadImages
im folgenden Skript, um die vorhandenen angehängten Bilder über AJAX zu laden, und übergebe dann einfach die Funktion mit den IDs der Bilder und es wird ein vorab ausgefülltes Modal geöffnet.Und hier ist die PHP-Funktion, die die AJAX-Anfrage bearbeitet:
Ich habe gerade das Snippet aus meinem WordPress-Framework kopiert, ich hoffe, es macht Sinn.
quelle