Як дозволити завантаження нестандартних типів файлів в медіа-бібліотеці 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».