get_allowed_mime_types( int|WP_User $user = null ): string[]

Retrieves the list of allowed mime types and file extensions.

Parameters

$userint|WP_Useroptional
User to check. Defaults to current user.

Default:null

Return

string[] Array of mime types keyed by the file extension regex corresponding to those types.

Source

function get_allowed_mime_types( $user = null ) {
	$t = wp_get_mime_types();

	unset( $t['swf'], $t['exe'] );
	if ( function_exists( 'current_user_can' ) ) {
		$unfiltered = $user ? user_can( $user, 'unfiltered_html' ) : current_user_can( 'unfiltered_html' );
	}

	if ( empty( $unfiltered ) ) {
		unset( $t['htm|html'], $t['js'] );
	}

	/**
	 * Filters the list of allowed mime types and file extensions.
	 *
	 * @since 2.0.0
	 *
	 * @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 apply_filters( 'upload_mimes', $t, $user );
}

Hooks

apply_filters( ‘upload_mimes’, array $t, int|WP_User|null $user )

Filters the list of allowed mime types and file extensions.

Changelog

VersionDescription
2.8.6Introduced.

User Contributed Notes

  1. Skip to note 3 content

    WordPress 5.4.1, get_allowed_mime_types() returns:

    array(90) {
    	["jpg|jpeg|jpe"]=> "image/jpeg"
    	["gif"]=> "image/gif"
    	["png"]=> "image/png"
    	["bmp"]=> "image/bmp"
    	["tiff|tif"]=> "image/tiff"
    	["ico"]=> "image/x-icon"
    	["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"]=> "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"
    	["class"]=> "application/java"
    	["tar"]=> "application/x-tar"
    	["zip"]=> "application/zip"
    	["gz|gzip"]=> "application/x-gzip"
    	["rar"]=> "application/rar"
    	["7z"]=> "application/x-7z-compressed"
    	["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"
    	["onetoc|onetoc2|onetmp|onepkg"]=> "application/onenote"
    	["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"
    }
  2. Skip to note 4 content

    Function to retrieve the mime type icon of a file by its extension.

    <?php
    /**
     * Get mime type icon URL based on file extension.
     *
     * @param $file_ext The file extension to get the icon for.
     * @return string Icon URL.
     */
    function wpdocs_get_icon_by_file_extension($file_ext) {
    	$mimes = get_allowed_mime_types();
    	if ( ! empty( $mimes ) ) {
    		foreach ($ mimes as $type => $mime ) {
    			if ( false !== strpos( $type, $file_ext ) ) {
    				return wp_mime_type_icon($mime);
    			}
    		}
    	}
    }
    ?>
    <img src="<?php echo esc_url( wpdocs_get_icon_by_file_extension( 'mp4' ) ); ?>" />

You must log in before being able to contribute a note or feedback.