WordPress: unfiltered_upload

Das Filtern von Uploads nach mime_type hat sicherlich schon so einige WordPress Nutzer zur Weißglut gebracht. Dateien welche man in die Mediathek oder in WordPress Download Monitor hochlädt werden in wp-admin/includes/file.php gefiltert, sofern der Benutzer nicht eine bestimmt Capability besitzt:

if ( ( !$type || !$ext ) && !current_user_can( 'unfiltered_upload' ) )
    return call_user_func($upload_error_handler, $file, __( 'File type does not meet security guidelines. Try another.' ));

Das sieht auf den ersten Blick sinnvoll aus. Was die Doku aber verschweigt – bzw. ich durch googlen zumindest nicht gefunden habe ist, dass derartige Uploads zusätzlich in der wp-config.php durch setzen eines define() aktiviert werden müssen:

/** Allow uploads of filtered file types to users with administrator role */
define('ALLOW_UNFILTERED_UPLOADS', true);

Ich hoffe, das hilft dem ein oder anderen weiter. Mich hat die Suche nach dem Grund für die Fehlermeldung zumindest die ein oder andere Minute meines Lebens gekostet ;-)

Update: Dieses “undokumentierte Feature” wurde vor 13 Monaten aufgrund eines Bug-Reports eingefügt: Ticket -> Changeset