Wie kann ein Benutzer ein Medium aus der Medienbibliothek auswählen?

Sorry für das niedrige Niveau der Forschung, aber der JS-Code der Medien war immer ein Mysterium für mich, und Googeln zeigt keine aktuellen und vernünftigen Antworten.

Das Szenario ist einfach, ich habe ein Formular, in dem ich dem Benutzer entweder ein neues Bild hochladen oder eines aus der Medienbibliothek auswählen lassen möchte. Der einfachste Weg scheint zu sein, das Medien-Modal zu öffnen und es bei Bedarf mit dem eigentlichen Upload zu verarbeiten. also alles was ich brauche ist

  1. Der einfache Teil – öffnen Sie das Medienmodal.
  2. Der schwierigere Teil – erhalten Sie die ID und vielleicht die URL des ausgewählten Mediums, wenn es schließt

Ist es überhaupt möglich, das Modal irgendwie zu erweitern? Ich kann wahrscheinlich mit dem Standardtext auf den Tasten leben, aber es wird auch schön sein, dies zu ändern.

Solutions Collecting From Web of "Wie kann ein Benutzer ein Medium aus der Medienbibliothek auswählen?"

Ähnliche Fragen finden Sie hier und hier . Ich benutze die folgende Methode, von hier angepasst:

Wenn dein Theme / Plugin initialisiert wird:

wp_enqueue_media(); 

Behandeln Sie den Medien-Dialog in Javascript:

 var wp_media_dialog_field; function selectMedia() { var custom_uploader; if (custom_uploader) { custom_uploader.open(); return; } custom_uploader = wp.media.frames.file_frame = wp.media({ title: 'Choose Image', button: { text: 'Choose Image' }, multiple: false }); custom_uploader.on('select', function() { attachment = custom_uploader.state().get('selection').first().toJSON(); wp_media_dialog_field.val(attachment.url); }); custom_uploader.open(); } 

Binden Sie einige Schaltflächen in Javascript, um den Mediendialog anzuzeigen, und speichern Sie das Feld, das den Rückgabewert akzeptiert:

 jQuery('#my_button_1').click(function(e) { e.preventDefault(); wp_media_dialog_field = jQuery('#my_field_1'); selectMedia(); }); jQuery('#my_button_2').click(function(e) { e.preventDefault(); wp_media_dialog_field = jQuery('#my_field_2'); selectMedia(); });