Wie man verschiedene Medien-Uploader-Frames / Filter-Bibliotheken abhängig von einer benutzerdefinierten Aktion erstellt

Hier ist das Ding. Ich benutze den WP Media Uploader im Frontend. Was ich brauche ist, dass es sich abhängig von einer bestimmten Handlung unterschiedlich verhält.

Ich füge die Medien in einer bestimmten benutzerdefinierten Post-Typ-Seite an.

Dies ist ein kleiner Auszug aus meinem Code. Ich benutze dies um die Mediathek auszulösen.

var uploader = wp.media({ title: 'Upload Image', multiple: false }).open() .on('select', function(e){ // Some code here }); 

Dann filtere ich die Bibliothek, um nur bestimmte Anhänge in der Bibliothek anzuzeigen, indem ich diesen Filter hier benutze und die $ _REQUEST benutze, um die aktuelle Beitrags-ID zu erhalten:

 function show_current_user_attachments( $query = array() ) { //Modify the query here to show current user attachments only return $query; } add_filter( 'ajax_query_attachments_args', 'show_current_user_attachments', 10, 1 ); 

So weit, so gut, aber ich brauche ein anderes Stück Logik auf dem aktuellen Post. Ich muss einen anderen wp.media auslösen, der ganz anders ist als dieser. Es muss nicht die Upload-Bildfunktionalität haben und es müssen verschiedene Anhänge in der Bibliothek angezeigt werden.

Einfach gesagt, meine Frage ist, wie kann ich die wp.media erweitern und verschiedene Argumente übergeben, die ich im ‘ajax_query_attachments_args’-Filter verarbeiten kann, so dass ich zwei völlig unterschiedliche Medien-Popups mit unterschiedlicher functionalität habe?

Danke im Voraus!

Solutions Collecting From Web of "Wie man verschiedene Medien-Uploader-Frames / Filter-Bibliotheken abhängig von einer benutzerdefinierten Aktion erstellt"

Sie müssen zwei verschiedene Medienmodale erstellen, die abhängig von Ihrem Klickereignis ausgetriggers werden. Hier ist ein Code aus einem kürzlichen Projekt, in dem ich diese Buttons dem tinyMCE Visual Editor hinzugefügt habe:

 jQuery(document).ready(function($){ $(document).on('click', '.mce-my_upload_button', upload_image_tinymce); $(document).on('click', '.mce-my_upload_pdf_button', upload_pdf_tinymce); function upload_image_tinymce(e) { e.preventDefault(); var $input_field = $('.mce-my_input_image'); var custom_uploader = wp.media.frames.file_frame = wp.media({ title: 'Add Image', button: { text: 'Add Image' }, library: { type: 'image' }, multiple: false }); custom_uploader.on('select', function() { var attachment = custom_uploader.state().get('selection').first().toJSON(); $input_field.val(attachment.sizes.medium.url); }); custom_uploader.open(); } function upload_pdf_tinymce(e) { e.preventDefault(); var $input_field = $('.mce-my_input_pdf'); var custom_uploader = wp.media.frames.file_frame = wp.media({ title: 'Add PDF', button: { text: 'Add PDF' }, library: { type: 'application/pdf' }, multiple: false }); custom_uploader.on('select', function() { var attachment = custom_uploader.state().get('selection').first().toJSON(); $input_field.val(attachment.url); }); custom_uploader.open(); }}); 

Hoffe das hilft!