Dateitypen für die Mediathek freigeben

Mit WordPress 2.8.5 wird die Whitelist der erlaubten Mime-Typen für Downloads erstmalig auch für Administratoren gültig. Dies ist ein Schritt in Richtung Sicherheit und wird im Artikel von Robert hinreichend erklärt. Robert zeigt auch, dass man mit Hilfe einer Konstanten die Möglichkeit alle Datentypen zu uploaden eröffnen kann.

Die Zeiten ändern sich.

Dieser Beitrag scheint älter als 8 Jahre zu sein – eine lange Zeit im Internet. Der Inhalt ist vielleicht veraltet.

Mit WordPress 2.8.5 wird die Whitelist der erlaubten Mime-Typen für Downloads erstmalig auch für Administratoren gültig. Dies ist ein Schritt in Richtung Sicherheit und wird im Artikel von Robert hinreichend erklärt.
Robert zeigt auch, dass man mit Hilfe einer Konstanten die Möglichkeit alle Datentypen zu uploaden eröffnen kann.
define ('ALLOW_UNFILTERED_UPLOADS', true);

Wer aber im Vorfeld schon diverse Projekte mit WordPress umgesetzt hat und das Problem hatte, dass User nicht über die Rechte zum Upload eines bestimmten Formates besaßen, der musste sich auch da was einfallen lassen.

In vielen Fällen wurde dazu via Plugin Role Manager der Upload aller Mime Typen erlaubt. Aus meiner Sicht nicht der richtige Weg und daher im folgenden ein kleiner Code-Schnipsel, der das Anpassen an die jeweilige Anforderung übernimmt.

Screenshot Mediathek

Alle erlaubten Typen findet man in der Whitelist-Funktion wp_check_filetype(), in wp-includes/functions.php.
Diese Funktion besitzt einen Filter upload_mimes, den man erweitern kann. Und dort setzen wir an und geben die Mime Typen mit, die wir benötigen. Im folgenden Beispiel erlaube ich dabei php-, xhtml- und htaccess-Files. Die Möglichkeiten werden in einem Array übergeben und die Zuordnung ist wichtig, damit WordPress auch ein Icon zuordnen kann, siehe Screenshot.


function my_upload_mimes() {
	$mime_types = array( 
		'php|phps'   => 'text/php',
		'xhtm|xhtml' => 'text/html',
		'htaccess'    => 'text/plain'
	);
	
	return $mime_types;
}

add_filter( 'upload_mimes', 'my_upload_mimes' );

Multisite

Innerhalb der Multisite Installation wird zusätzlich ein Eintrag in der Datenbank genutzt um die Dateitypen zu prüfen. Der Eintrag ist in der Tabelle sitemeta, key upload_filetypes zu finden. Darin ggf die Typen erweitern, ansonsten helfen nur die Superadmin Rechte am Userprofil um das zu umgehen.

Mime Typen

Um eine Übersicht aller Mime-Typen zu erhalten, kann gern die folgenden Liste genutzt werden. Die Übergabe an WordPress sollte aber nur die enthalten, die man auch explizit braucht, ansonsten kann die obige Konstante genutzt geben.


$mime_types = array(
'323'     => 'text/h323',
'acx'     => 'application/internet-property-stream',
'ai'      => 'application/postscript',
'aif'     => 'audio/x-aiff',
'aifc'    => 'audio/x-aiff',
'aiff'    => 'audio/x-aiff',
'asf'     => 'video/x-ms-asf',
'asr'     => 'video/x-ms-asf',
'asx'     => 'video/x-ms-asf',
'au'      => 'audio/basic',
'avi'     => 'video/x-msvideo',
'axs'     => 'application/olescript',
'bas'     => 'text/plain',
'bcpio'   => 'application/x-bcpio',
'bin'     => 'application/octet-stream',
'bmp'     => 'image/bmp',
'c'       => 'text/plain',
'cat'     => 'application/vnd.ms-pkiseccat',
'cdf'     => 'application/x-cdf',
'cer'     => 'application/x-x509-ca-cert',
'class'   => 'application/octet-stream',
'clp'     => 'application/x-msclip',
'cmx'     => 'image/x-cmx',
'cod'     => 'image/cis-cod',
'cpio'    => 'application/x-cpio',
'crd'     => 'application/x-mscardfile',
'crl'     => 'application/pkix-crl',
'crt'     => 'application/x-x509-ca-cert',
'csh'     => 'application/x-csh',
'css'     => 'text/css',
'dcr'     => 'application/x-director',
'der'     => 'application/x-x509-ca-cert',
'dir'     => 'application/x-director',
'dll'     => 'application/x-msdownload',
'dms'     => 'application/octet-stream',
'doc'     => 'application/msword',
'dot'     => 'application/msword',
'dvi'     => 'application/x-dvi',
'dxr'     => 'application/x-director',
'eps'     => 'application/postscript',
'etx'     => 'text/x-setext',
'evy'     => 'application/envoy',
'exe'     => 'application/octet-stream',
'fif'     => 'application/fractals',
'flr'     => 'x-world/x-vrml',
'gif'     => 'image/gif',
'gtar'    => 'application/x-gtar',
'gz'      => 'application/x-gzip',
'h'       => 'text/plain',
'hdf'     => 'application/x-hdf',
'hlp'     => 'application/winhlp',
'hqx'     => 'application/mac-binhex40',
'hta'     => 'application/hta',
'htc'     => 'text/x-component',
'htm'     => 'text/html',
'html'    => 'text/html',
'htt'     => 'text/webviewhtml',
'ico'     => 'image/x-icon',
'ief'     => 'image/ief',
'iii'     => 'application/x-iphone',
'ins'     => 'application/x-internet-signup',
'isp'     => 'application/x-internet-signup',
'jfif'    => 'image/pipeg',
'jpe'     => 'image/jpeg',
'jpeg'    => 'image/jpeg',
'jpg'     => 'image/jpeg',
'js'      => 'application/x-javascript',
'latex'   => 'application/x-latex',
'lha'     => 'application/octet-stream',
'lsf'     => 'video/x-la-asf',
'lsx'     => 'video/x-la-asf',
'lzh'     => 'application/octet-stream',
'm13'     => 'application/x-msmediaview',
'm14'     => 'application/x-msmediaview',
'm3u'     => 'audio/x-mpegurl',
'man'     => 'application/x-troff-man',
'mdb'     => 'application/x-msaccess',
'me'      => 'application/x-troff-me',
'mht'     => 'message/rfc822',
'mhtml'   => 'message/rfc822',
'mid'     => 'audio/mid',
'mny'     => 'application/x-msmoney',
'mov'     => 'video/quicktime',
'movie'   => 'video/x-sgi-movie',
'mp2'     => 'video/mpeg',
'mp3'     => 'audio/mpeg',
'mpa'     => 'video/mpeg',
'mpe'     => 'video/mpeg',
'mpeg'    => 'video/mpeg',
'mpg'     => 'video/mpeg',
'mpp'     => 'application/vnd.ms-project',
'mpv2'    => 'video/mpeg',
'ms'      => 'application/x-troff-ms',
'mvb'     => 'application/x-msmediaview',
'nws'     => 'message/rfc822',
'oda'     => 'application/oda',
'p10'     => 'application/pkcs10',
'p12'     => 'application/x-pkcs12',
'p7b'     => 'application/x-pkcs7-certificates',
'p7c'     => 'application/x-pkcs7-mime',
'p7m'     => 'application/x-pkcs7-mime',
'p7r'     => 'application/x-pkcs7-certreqresp',
'p7s'     => 'application/x-pkcs7-signature',
'pbm'     => 'image/x-portable-bitmap',
'pdf'     => 'application/pdf',
'pfx'     => 'application/x-pkcs12',
'pgm'     => 'image/x-portable-graymap',
'pko'     => 'application/ynd.ms-pkipko',
'pma'     => 'application/x-perfmon',
'pmc'     => 'application/x-perfmon',
'pml'     => 'application/x-perfmon',
'pmr'     => 'application/x-perfmon',
'pmw'     => 'application/x-perfmon',
'pnm'     => 'image/x-portable-anymap',
'pot'     => 'application/vnd.ms-powerpoint',
'ppm'     => 'image/x-portable-pixmap',
'pps'     => 'application/vnd.ms-powerpoint',
'ppt'     => 'application/vnd.ms-powerpoint',
'prf'     => 'application/pics-rules',
'ps'      => 'application/postscript',
'pub'     => 'application/x-mspublisher',
'qt'      => 'video/quicktime',
'ra'      => 'audio/x-pn-realaudio',
'ram'     => 'audio/x-pn-realaudio',
'ras'     => 'image/x-cmu-raster',
'rgb'     => 'image/x-rgb',
'rmi'     => 'audio/mid',
'roff'    => 'application/x-troff',
'rtf'     => 'application/rtf',
'rtx'     => 'text/richtext',
'scd'     => 'application/x-msschedule',
'sct'     => 'text/scriptlet',
'setpay'  => 'application/set-payment-initiation',
'setreg'  => 'application/set-registration-initiation',
'sh'      => 'application/x-sh',
'shar'    => 'application/x-shar',
'sit'     => 'application/x-stuffit',
'snd'     => 'audio/basic',
'spc'     => 'application/x-pkcs7-certificates',
'spl'     => 'application/futuresplash',
'src'     => 'application/x-wais-source',
'sst'     => 'application/vnd.ms-pkicertstore',
'stl'     => 'application/vnd.ms-pkistl',
'stm'     => 'text/html',
'svg'     => 'image/svg+xml',
'sv4cpio' => 'application/x-sv4cpio',
'sv4crc'  => 'application/x-sv4crc',
't'       => 'application/x-troff',
'tar'     => 'application/x-tar',
'tcl'     => 'application/x-tcl',
'tex'     => 'application/x-tex',
'texi'    => 'application/x-texinfo',
'texinfo' => 'application/x-texinfo',
'tgz'     => 'application/x-compressed',
'tif'     => 'image/tiff',
'tiff'    => 'image/tiff',
'tr'      => 'application/x-troff',
'trm'     => 'application/x-msterminal',
'tsv'     => 'text/tab-separated-values',
'txt'     => 'text/plain',
'uls'     => 'text/iuls',
'ustar'   => 'application/x-ustar',
'vcf'     => 'text/x-vcard',
'vrml'    => 'x-world/x-vrml',
'wav'     => 'audio/x-wav',
'wcm'     => 'application/vnd.ms-works',
'wdb'     => 'application/vnd.ms-works',
'wks'     => 'application/vnd.ms-works',
'wmf'     => 'application/x-msmetafile',
'wps'     => 'application/vnd.ms-works',
'wri'     => 'application/x-mswrite',
'wrl'     => 'x-world/x-vrml',
'wrz'     => 'x-world/x-vrml',
'xaf'     => 'x-world/x-vrml',
'xbm'     => 'image/x-xbitmap',
'xla'     => 'application/vnd.ms-excel',
'xlc'     => 'application/vnd.ms-excel',
'xlm'     => 'application/vnd.ms-excel',
'xls'     => 'application/vnd.ms-excel',
'xlt'     => 'application/vnd.ms-excel',
'xlw'     => 'application/vnd.ms-excel',
'xof'     => 'x-world/x-vrml',
'xpm'     => 'image/x-xpixmap',
'xwd'     => 'image/x-xwindowdump',
'z'       => 'application/x-compress',
'zip'     => 'application/zip'
);

Kommentare sind geschlossen.