upload_mimesхук-фильтрWP 2.0.0

Позволяет добавить/удалить типы файлов для загрузки на сайт (MIME-типы файлов разрешенных к загрузке).

MIME-типы файлов

При загрузке файлов .rar, .swf и других выдаётся сообщение:

«Файл не удалось загрузить из-за ошибки. Тип файла не подходит по соображениям безопасности».

Чтобы обойти это предупреждение, нужно добавить в белый список MIME-тип загружаемого файла.

Список предустановленных MIME-типов

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

Использование

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(массив)

Данные Mime типов в виде массива. См. что возвращает функция wp_get_mime_types().

Массив будет содержать элементы с ключем в видео регулярки для миме типа, например 'jpg|jpeg|jpe' и значением - сам миме тип, например 'image/jpeg'.

$user(число/WP_User/null)
ID или объект юзера. Если указать null, то будет взят текущий пользователь.

Примеры

2

#1 Разрешаем загрузку CSV файлов

add_filter( 'upload_mimes', 'add_csv_type' );
function add_csv_type( $mime_types ){
	$mime_types['csv'] = 'text/csv';

	return $mime_types;
}
1

#2 Разрешим админам загружать любые файлы без проверок

Если указать константу ALLOW_UNFILTERED_UPLOADS в плагине или файле wp-config.php, то администраторы (пользователи с правом unfiltered_upload) смогут загружать файлы любых типов:

define( 'ALLOW_UNFILTERED_UPLOADS', true );

Подробнее читайте здесь.

Список изменений

С версии 2.0.0 Введена.

Где вызывается хук

get_allowed_mime_types()
upload_mimes
wp-includes/functions.php 3668
return apply_filters( 'upload_mimes', $t, $user );

Где используется хук в WordPress

wp-includes/ms-default-filters.php 102
add_filter( 'upload_mimes', 'check_upload_mimes' );
wp-includes/rest-api/endpoints/class-wp-rest-font-faces-controller.php 858
add_filter( 'upload_mimes', array( 'WP_Font_Utils', 'get_allowed_font_mime_types' ) );
wp-includes/rest-api/endpoints/class-wp-rest-font-faces-controller.php 878
remove_filter( 'upload_mimes', array( 'WP_Font_Utils', 'get_allowed_font_mime_types' ) );
campusboy 4995youtube.com/c/wpplus
Создатель YouTube канала wp-plus, на котором делюсь своим опытом. Активный пользователь wp-kama.ru. WordPress-разработчик. Разработка сайтов и лендингов. Доработка существующих проектов. Сопровождение ресурсов.
Редакторы: Kama 9895
6 комментариев