WordPress как на ладони
wordpress jino

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

Используется для изменения списка доступных для загрузки файлов по MIME-типу.

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

add_filter( 'upload_mimes', 'filter_function_name_5485', 10, 2 );
function filter_function_name_5485( $t, $user ){
	// filter...

	return $t;
}
$t(массив)

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

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

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

Список предустановленных 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

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

При загрузке файлов *.rar, *.swf и других выдаётся сообщение: «Файл не удалось загрузить из-за ошибки. Тип файла не подходит по соображениям безопасности». Чтобы обойти это предупреждение, нужно добавить в белый список MIME-тип загружаемого файла.

Примеры

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

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

Связи хука

Используется в: get_allowed_mime_types()

Фрагменты кода хука upload_mimes

Фрагмент из: wp-includes/functions.php WP 4.8.2
...
		$unfiltered = $user ? user_can( $user, 'unfiltered_html' ) : current_user_can( 'unfiltered_html' );

	if ( empty( $unfiltered ) )
		unset( $t['htm|html'] );

	/**
	 * Filters 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. 'swf' and 'exe' removed from full list. 'htm|html' also
	 *                               removed depending on '$user' capabilities.
	 * @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 );
}

/**
 * Display "Are You Sure" message to confirm the action being taken.
 *
 * If the action has the nonce explain message, then it will be displayed
 * along with the "Are you sure?" message.
 *
 * @since 2.0.4
 *
 * @param string $action The nonce action.
 */
function wp_nonce_ays( $action ) {
	if ( 'log-out' == $action ) {
		$html = sprintf(
...
campusboy 1848wp-plus.ru
WordPress-разработчик. Разработка сайтов и лендингов. Доработка существующих проектов. Сопровождение ресурсов.
upload_mimes 1 комментарий
  • чет не работает ... ? wp 4.8.1

    add_filter( 'upload_mimes', 'my_myme_types' );
    
    function my_myme_types( $mime_types ) {
      $mime_types['ogv'] = 'video/ogg';     // Adding .ogv extension
    
      return $mime_types;
    }
    Ответить2 месяца назад #

Здравствуйте, !

Ваш комментарий