Alter Accepted Filetypes in WordPress


Falls man die Fehlermeldung „File type does not meet security guidelines. Try another.“ erhält, so muss die Liste der akzeptierten Mime Typen (siehe auch: http://www.iana.org/assignments/media-types/) / Dateitypen erweitert werden.

Der entprechende Code ist in /wp-includes/functions.php zu finden (WordPress Version 3.0.4):

[code]

function wp_upload_bits( $name, $deprecated, $bits, $time = null ) {
 if ( !empty( $deprecated ) )
  _deprecated_argument( __FUNCTION__, ‚2.0‘ );

 if ( empty( $name ) )
  return array( ‚error‘ => __( ‚Empty filename‘ ) );

 $wp_filetype = wp_check_filetype( $name );
 if ( !$wp_filetype[‚ext‘] )
  return array( ‚error‘ => __( ‚Invalid file type‘ ) );

function wp_check_filetype( $filename, $mimes = null ) {
 if ( empty($mimes) )
  $mimes = get_allowed_mime_types();
 $type = false;
 $ext = false;

 foreach ( $mimes as $ext_preg => $mime_match ) {
  $ext_preg = ‚!\.(‚ . $ext_preg . ‚)$!i‘;
  if ( preg_match( $ext_preg, $filename, $ext_matches ) ) {
   $type = $mime_match;
   $ext = $ext_matches[1];
   break;
  }
 }

 return compact( ‚ext‘, ‚type‘ );
}

function get_allowed_mime_types() {
 static $mimes = false;

 if ( !$mimes ) {
  // Accepted MIME types are set here as PCRE unless provided.
  $mimes = apply_filters( ‚upload_mimes‘, array(
  ‚jpg|jpeg|jpe‘ => ‚image/jpeg‘,
  ‚gif‘ => ‚image/gif‘,
  ‚png‘ => ‚image/png‘,
  ‚bmp‘ => ‚image/bmp‘,
  ‚tif|tiff‘ => ‚image/tiff‘,
  ‚ico‘ => ‚image/x-icon‘,
  ‚asf|asx|wax|wmv|wmx‘ => ‚video/asf‘,
  ‚avi‘ => ‚video/avi‘,

[/code]

Die Funktion get_allowed_mime_types() einfach um den benötigten Dateityp / Mime Typ erweitern.
‚Dateierweiterung‘ => ‚Mime Typ‘

Unter *nix kann der Mime Typ mittels „file -i Dateiname“ angezeigt werden. Ein Tool für Windows ist mir derzeit nicht bekannt.

Quellen:
http://en.support.wordpress.com/accepted-filetypes/
http://www.snilesh.com/resources/wordpress/wordpress-tips-and-tricks/wordpress-file-type-does-not-meet-security-guidelines-try-another-error/