Функция get_allowed_mime_types()
в WordPress возвращает список MIME-типов и соответствующих им файловых расширений, которые разрешены для загрузки. Эта функция часто используется для проверки допустимости загружаемых файлов на сайте, а также для расширения списка поддерживаемых форматов.
get_allowed_mime_types( int|WP_User $user = null ): string[]
Параметры:
$user
(int|WP_User, необязательно) — Пользователь, для которого будет проверяться список допустимых типов файлов. По умолчанию используется текущий пользователь.
Возвращаемое значение:
- Массив MIME-типов, где ключами являются регулярные выражения для расширений файлов, а значениями — соответствующие им MIME-типы.
Пример списка MIME-типов, возвращаемых функцией:
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"
}
Пример 1: Получение списка всех допустимых MIME-типов
В этом примере мы получаем массив всех поддерживаемых MIME-типов для текущего пользователя и выводим его на экран.
// Получаем список разрешенных MIME-типов
$mime_types = get_allowed_mime_types();
// Выводим результат
echo '<pre>';
print_r( $mime_types );
echo '</pre>';
Результат будет выглядеть как массив всех допустимых форматов, например:
Array
(
[jpg|jpeg|jpe] => image/jpeg
[png] => image/png
[gif] => image/gif
[mp3|m4a|m4b] => audio/mpeg
[mp4|m4v] => video/mp4
// И так далее...
)
Пример 2: Проверка разрешенности загрузки файла по MIME-типу
Этот пример демонстрирует, как проверить, может ли пользователь загрузить файл с определенным расширением.
// Функция для проверки разрешенности файла
function is_file_allowed( $file_extension ) {
$mime_types = get_allowed_mime_types();
foreach ( $mime_types as $extensions => $mime_type ) {
if ( preg_match( '/\b' . preg_quote( $file_extension, '/' ) . '\b/', $extensions ) ) {
return true;
}
}
return false;
}
// Пример использования
$file_extension = 'pdf';
if ( is_file_allowed( $file_extension ) ) {
echo 'Файл с расширением ' . $file_extension . ' разрешен для загрузки.';
} else {
echo 'Файл с расширением ' . $file_extension . ' не разрешен для загрузки.';
}
Результат:
Файл с расширением pdf разрешен для загрузки.
Пример 3: Добавление нового MIME-типа
Если вам нужно добавить поддержку нового типа файла, вы можете использовать фильтр upload_mimes
. В следующем примере мы добавляем поддержку файлов с расширением .svg
.
// Функция для добавления нового MIME-типа
function add_svg_mime_type( $mimes ) {
$mimes['svg'] = 'image/svg+xml';
return $mimes;
}
add_filter( 'upload_mimes', 'add_svg_mime_type' );
// Проверка результата
$mime_types = get_allowed_mime_types();
print_r( $mime_types );
Теперь WordPress будет поддерживать загрузку файлов с расширением .svg
.
Пример 4: Получение иконки файла по его MIME-типу
Можно использовать функцию для получения URL иконки файла, основываясь на его MIME-типе. Это удобно для отображения иконок рядом с загружаемыми файлами.
// Функция для получения иконки файла по его расширению
function get_icon_by_mime_type( $file_ext ) {
$mime_types = get_allowed_mime_types();
foreach ( $mime_types as $extensions => $mime_type ) {
if ( strpos( $extensions, $file_ext ) !== false ) {
return wp_mime_type_icon( $mime_type );
}
}
return null; // Если расширение не найдено
}
// Пример использования
echo '<img src="' . esc_url( get_icon_by_mime_type( 'pdf' ) ) . '" alt="Icon" />';
Этот код выведет изображение с иконкой файла для расширения .pdf
, если оно поддерживается WordPress.
Примечания
- Фильтр
upload_mimes
: Используйте этот фильтр, чтобы добавить или удалить поддерживаемые типы файлов. Это особенно полезно для сайтов, которым требуется поддержка нестандартных форматов файлов. - Параметр
$user
: Если передать в функцию пользователя, можно получить список MIME-типов, разрешенных для конкретного пользователя, а не для глобального сайта.
Заключение
Функция get_allowed_mime_types()
является важным инструментом для работы с загрузками файлов в WordPress. Она позволяет разработчикам проверять и расширять список поддерживаемых типов файлов, обеспечивая безопасность и гибкость при работе с мультимедиа и документами. Благодаря простоте использования и поддержке фильтров, она легко интегрируется в любые проекты на WordPress.