Как разрешить загрузку нестандартных типов файлов в медиа-библиотеке CMS WordPress?

Опубликовано:

Недавно случилась необычная ситуация с загрузкой файлов в медиа-библиотеке CMS WordPress, когда в ответ появилась ошибка такого плана:

«Sorry, this file type is not permitted for security reasons» или «Извините, тип этого файла не разрешён из соображений безопасности».

Оказывается, в WP существует перечень по умолчанию допустимых форматов файлов, другими словами – список mime-типов. В интернете было найдено несколько решений, но все они мягко говоря не кошерные, так как там предлагалось изменять файл в ядре CMS, что есть не очень хорошо. Обратившись в несколько разделов официальной документации мы нашли изящное по всем канонам решение.

Пример приводится исходя из нашей ситуации, при попытке загрузить файл типа «djvu».

В функционал вашей темы или плагина потребуется добавить фильтр, котором и будут описаны ваши новые форматы (mime-типы) разрешенные для загрузки файлов в медиа-библиотеке CMS WordPress. Например, в нашем случае это выглядело так:

add_filter('upload_mimes', 'additional_mime_types');

function additional_mime_types($mimes)
{
    $mimes['djv'] = 'image/vnd.djvu';
    $mimes['djvu'] = 'image/vnd.djvu';

    return $mimes;
}

то есть, через нашу функцию фильтра проходит массив, в который мы добавили два новых элемента с ключом расширения и непосредственно с mime-типом в значении. Правильный mime-тип для файлов типа «djvu» мы подсмотрели в Википедии. После сохранения и повторной загрузки файла такого типа все прошло успешно.

Для других типов файлов точно также можно с легкостью найти в Википедии правильные mime-типы и добавить их в функцию фильтра «upload_mimes».