Allows adding/removing file types that can be uploaded to the site (file MIME types allowed for upload).
File MIME types
When uploading .rar, .swf, and other files, the following message is displayed:
"Sorry, you are not allowed to upload this file type."
To avoid this warning, add the MIME type of the uploaded file to the allowlist.
List of predefined MIME types
See: wp_get_mime_types()
[jpg|jpeg|jpe] => image/jpeg
[gif] => image/gif
[png] => image/png
[bmp] => image/bmp
[tiff|tif] => image/tiff
[webp] => image/webp
[avif] => image/avif
[ico] => image/x-icon
[heic] => image/heic
[heif] => image/heif
[heics] => image/heic-sequence
[heifs] => image/heif-sequence
[asf|asx] => video/x-ms-asf
[wmv] => video/x-ms-wmv
[wmx] => video/x-ms-wmx
[wm] => video/x-ms-wm
[avi] => video/avi
[divx] => video/divx
[flv] => video/x-flv
[mov|qt] => video/quicktime
[mpeg|mpg|mpe] => video/mpeg
[mp4|m4v] => video/mp4
[ogv] => video/ogg
[webm] => video/webm
[mkv] => video/x-matroska
[3gp|3gpp] => video/3gpp
[3g2|3gp2] => video/3gpp2
[txt|asc|c|cc|h|srt] => text/plain
[csv] => text/csv
[tsv] => text/tab-separated-values
[ics] => text/calendar
[rtx] => text/richtext
[css] => text/css
[htm|html] => text/html
[vtt] => text/vtt
[dfxp] => application/ttaf+xml
[mp3|m4a|m4b] => audio/mpeg
[aac] => audio/aac
[ra|ram] => audio/x-realaudio
[wav|x-wav] => audio/wav
[ogg|oga] => audio/ogg
[flac] => audio/flac
[mid|midi] => audio/midi
[wma] => audio/x-ms-wma
[wax] => audio/x-ms-wax
[mka] => audio/x-matroska
[rtf] => application/rtf
[js] => application/javascript
[pdf] => application/pdf
[swf] => application/x-shockwave-flash
[class] => application/java
[tar] => application/x-tar
[zip] => application/zip
[gz|gzip] => application/x-gzip
[rar] => application/rar
[7z] => application/x-7z-compressed
[exe] => application/x-msdownload
[psd] => application/octet-stream
[xcf] => application/octet-stream
[doc] => application/msword
[pot|pps|ppt] => application/vnd.ms-powerpoint
[wri] => application/vnd.ms-write
[xla|xls|xlt|xlw] => application/vnd.ms-excel
[mdb] => application/vnd.ms-access
[mpp] => application/vnd.ms-project
[docx] => application/vnd.openxmlformats-officedocument.wordprocessingml.document
[docm] => application/vnd.ms-word.document.macroEnabled.12
[dotx] => application/vnd.openxmlformats-officedocument.wordprocessingml.template
[dotm] => application/vnd.ms-word.template.macroEnabled.12
[xlsx] => application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
[xlsm] => application/vnd.ms-excel.sheet.macroEnabled.12
[xlsb] => application/vnd.ms-excel.sheet.binary.macroEnabled.12
[xltx] => application/vnd.openxmlformats-officedocument.spreadsheetml.template
[xltm] => application/vnd.ms-excel.template.macroEnabled.12
[xlam] => application/vnd.ms-excel.addin.macroEnabled.12
[pptx] => application/vnd.openxmlformats-officedocument.presentationml.presentation
[pptm] => application/vnd.ms-powerpoint.presentation.macroEnabled.12
[ppsx] => application/vnd.openxmlformats-officedocument.presentationml.slideshow
[ppsm] => application/vnd.ms-powerpoint.slideshow.macroEnabled.12
[potx] => application/vnd.openxmlformats-officedocument.presentationml.template
[potm] => application/vnd.ms-powerpoint.template.macroEnabled.12
[ppam] => application/vnd.ms-powerpoint.addin.macroEnabled.12
[sldx] => application/vnd.openxmlformats-officedocument.presentationml.slide
[sldm] => application/vnd.ms-powerpoint.slide.macroEnabled.12
[oxps] => application/oxps
[xps] => application/vnd.ms-xpsdocument
[odt] => application/vnd.oasis.opendocument.text
[odp] => application/vnd.oasis.opendocument.presentation
[ods] => application/vnd.oasis.opendocument.spreadsheet
[odg] => application/vnd.oasis.opendocument.graphics
[odc] => application/vnd.oasis.opendocument.chart
[odb] => application/vnd.oasis.opendocument.database
[odf] => application/vnd.oasis.opendocument.formula
[wp|wpd] => application/wordperfect
[key] => application/vnd.apple.keynote
[numbers] => application/vnd.apple.numbers
[pages] => application/vnd.apple.pages
Usage
add_filter( 'upload_mimes', 'wp_kama_upload_mimes_filter', 10, 2 );
/**
* Function for `upload_mimes` filter-hook.
*
* @param array $t Mime types keyed by the file extension regex corresponding to those
* types.
* @param int|WP_User|null $user User ID, User object or null if not provided (indicates current
* user).
*
* @return array
*/
function wp_kama_upload_mimes_filter( $t, $user ){
// filter...
return $t;
}
- $t(array)
MIME-type data as an array. See the value returned by wp_get_mime_types().
The array contains elements whose keys are regular expressions for MIME types, such as 'jpg|jpeg|jpe', and whose values are the MIME types themselves, such as 'image/jpeg'.
- $user(int/WP_User/null)
- User ID or object. If
null is specified, the current user is used.
Examples
#1 Allow CSV files to be uploaded
add_filter( 'upload_mimes', 'add_csv_type' );
function add_csv_type( $mime_types ){
$mime_types['csv'] = 'text/csv';
return $mime_types;
}
#2 Allow administrators to upload any files without validation
If the ALLOW_UNFILTERED_UPLOADS constant is defined in a plugin or in the wp-config.php file, administrators (users with the unfiltered_upload capability) will be able to upload files of any type:
define( 'ALLOW_UNFILTERED_UPLOADS', true );
Read more here.