Begrenzen Sie den Upload nach Dateityp nur für bestimmte benutzerdefinierte Post-Typen

Ich habe einen benutzerdefinierten Post-Typ namens “pdf” erstellt. Ich habe eine benutzerdefinierte Metabox, wo Benutzer eine PDF-Datei hochladen können durch WordPress integrierten Medien-Uploader Ich muss zulässige Dateien (pdf) nur in diesem Uploader einschränken. Ich weiß bereits, wie man erlaubte Dateien einschränkt: Wie stelle ich den Dateityp in wp_handle_upload ein? aber der Link oben, interferiere mit allen Uploads. Irgendein Hinweis?

Vielen Dank

Bearbeiten: Ich habe gefunden, wie Dateityp in plupload zu begrenzen, so habe ich die Hälfte des Problems getriggers:

add_filter( 'plupload_init', 'my_plupload_init', 0, 1 ); function my_plupload_init( $plupload_init ) { $plupload_init['filters'] = array( array('title' => __( 'Allowed Files' ), 'extensions' => 'pdf') ); return $plupload_init; } 

Edit # 2: Verwendung von wp_handle_upload_prefilter Filter funktioniert nicht: Thi ist, was in $ _REQUEST Objekt verfügbar ist, nachdem ein Bild auf einen neuen Beitrag hochgeladen wird:

  array 'type' => string 'image' (length=5) 'tab' => string 'type' (length=4) 'post_id' => string '0' (length=1) '_wpnonce' => string '375c5f46f2' (length=10) '_wp_http_referer' => string '/wp-admin/media-upload.php?post_id=' (length=37) 'html-upload' => string 'Carica media' (length=12) 

Es gibt keine Informationen zu meinem benutzerdefinierten Post-Typ. Die ID ist 0, weil der Beitrag noch nicht gespeichert wurde.

Bearbeiten Sie # 3:

Dank @TheDeadMusic Antwort habe ich eine Zeile Code zu meinem Javascript hinzugefügt. Dies ist der Js-Code, den ich tatsächlich verwende, der großartig funktioniert:

 jQuery(document).ready(function($){ // #btn_upload is my custom button $('#btn_upload').click(function(event){ event.preventDefault(); var backup = window.send_to_editor; var src=''; //post_id is always set so I can pass it safely to tickbox var post_id=$('#post_ID').val(); var target=$('#pdf_url'); window.send_to_editor = function(html) { //I have to get the link to "original file" from html returned by tickbox link = $('a',html).attr('href'); $(target).val(link); tb_remove(); window.send_to_editor=backup; //reset default action } //show the uploader tb_show('', 'media-upload.php?post_id='+post_id+'&TB_iframe=true'); }); }); 

Solutions Collecting From Web of "Begrenzen Sie den Upload nach Dateityp nur für bestimmte benutzerdefinierte Post-Typen"

 function wpse_59621_mimes_filter( $mimes ) { return array( 'pdf' => 'application/pdf' ); } function wpse_59621_delay_mimes_filter( $value ) { if ( isset( $_REQUEST['post_id'] ) && get_post_type( $_REQUEST['post_id'] ) === 'my_post_type' ) add_filter( 'upload_mimes', 'wpse_59621_mimes_filter' ); else remove_filter( 'upload_mimes', 'wpse_59621_mimes_filter' ); return $value; } add_filter( 'wp_handle_upload_prefilter', 'wpse_59621_delay_mimes_filter' ); 

Lassen Sie uns wissen, wie es läuft – das ist nicht getestet, aber ich bin zuversichtlich!