WordPress как на ладони
rgbcode is looking for WordPress developers.

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

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

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

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

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

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

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

[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
[ra|ram]                        => audio/x-realaudio
[wav]                           => audio/wav
[ogg|oga]                       => audio/ogg
[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

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

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, то будет взят текущий пользователь.

Примеры

1

#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 3592
return apply_filters( 'upload_mimes', $t, $user );

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

wp-includes/ms-default-filters.php 102
add_filter( 'upload_mimes', 'check_upload_mimes' );
campusboy 4737youtube.com/c/wpplus
Создатель YouTube канала wp-plus, на котором делюсь своим опытом. Активный пользователь wp-kama.ru. WordPress-разработчик. Разработка сайтов и лендингов. Доработка существующих проектов. Сопровождение ресурсов.
Редакторы: Kama 9600
6 комментариев
    Войти