钩子文档

mime_types

💡 云策文档标注

概述

本文档介绍了 WordPress 中的 'mime_types' 过滤器,用于修改 MIME 类型和文件扩展名的映射列表。开发者可以通过此过滤器添加新的 MIME 类型,但移除操作应使用 'upload_mimes' 过滤器。

关键要点

  • 'mime_types' 过滤器用于添加 MIME 类型,参数为数组,键是文件扩展名正则表达式,值是对应的 MIME 类型。
  • 移除 MIME 类型应使用 'upload_mimes' 过滤器,而非 'mime_types'。
  • 文档提供了默认的 MIME 类型列表,涵盖图像、视频、文本、音频、应用程序等多种格式。

代码示例

/**
 * Add webp to allowed media types
 */
function wpdocs_add_webp( $wp_get_mime_types ) {
    $wp_get_mime_types['webp'] = 'image/webp';
    return $wp_get_mime_types;
}

add_filter( 'mime_types', 'wpdocs_add_webp' );

注意事项

添加新 MIME 类型时,需注意某些格式(如 WebP)可能在媒体库中显示不正确,因为图像处理函数可能无法正确读取其尺寸。


📄 原文内容

Filters the list of mime types and file extensions.

Description

This filter should be used to add, not remove, mime types. To remove mime types, use the ‘upload_mimes’ filter.

Parameters

$wp_get_mime_typesstring[]
Mime types keyed by the file extension regex corresponding to those types.

Source

return apply_filters(
	'mime_types',
	array(
		// Image formats.
		'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',

		// TODO: Needs improvement. All images with the following mime types seem to have .heic file extension.
		'heic'                         => 'image/heic',
		'heif'                         => 'image/heif',
		'heics'                        => 'image/heic-sequence',
		'heifs'                        => 'image/heif-sequence',

		// Video formats.
		'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',  // Can also be audio.
		'3g2|3gp2'                     => 'video/3gpp2', // Can also be audio.
		// Text formats.
		'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',
		// Audio formats.
		'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',
		// Misc application formats.
		'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',
		// MS Office formats.
		'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',
		// OpenOffice formats.
		'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',
		// WordPerfect formats.
		'wp|wpd'                       => 'application/wordperfect',
		// iWork formats.
		'key'                          => 'application/vnd.apple.keynote',
		'numbers'                      => 'application/vnd.apple.numbers',
		'pages'                        => 'application/vnd.apple.pages',
	)
);

Changelog

Version Description
3.5.0 Introduced.

User Contributed Notes

  1. Skip to note 2 content

    Add Webp image type to allowed media types. Note that this type may still not display correctly in media library, since its dimensions might be incorrectly read by image processing functions.

    /**
     * Add webp to allowed media types
     */
    function wpdocs_add_webp( $wp_get_mime_types ) {
    	$wp_get_mime_types['webp'] = 'image/webp';
    	return $wp_get_mime_types;
    }
    
    add_filter( 'mime_types', 'wpdocs_add_webp' );