函数文档

get_allowed_mime_types()

💡 云策文档标注

概述

get_allowed_mime_types() 函数用于获取允许的 MIME 类型和文件扩展名列表,基于用户权限进行过滤。它返回一个数组,其中键是文件扩展名的正则表达式,值是对应的 MIME 类型。

关键要点

  • 函数参数 $user 可选,用于指定用户对象或 ID,默认为当前用户,影响权限检查。
  • 默认会移除 'swf' 和 'exe' 类型,并根据用户是否具有 'unfiltered_html' 能力决定是否移除 'htm|html' 和 'js' 类型。
  • 通过 apply_filters('upload_mimes', $t, $user) 钩子允许开发者自定义允许的 MIME 类型列表。
  • 函数返回数组格式,便于在文件上传验证等场景中使用。

代码示例

// 获取当前用户允许的 MIME 类型列表
$allowed_mimes = get_allowed_mime_types();

// 获取指定用户(如 ID 为 2)允许的 MIME 类型列表
$user_mimes = get_allowed_mime_types(2);

注意事项

  • 函数依赖于 wp_get_mime_types() 获取基础 MIME 类型列表,并在此基础上进行过滤。
  • 权限检查使用 user_can() 或 current_user_can(),确保安全控制。
  • 返回的数组可用于 wp_check_filetype() 等函数进行文件类型验证。

📄 原文内容

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

Version Description
2.8.6 Introduced.

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"
    }