Как разрешить загрузку zip и svg файлов для WordPress любой версии

В этой статье опишу метод быстрого добавления файлов с расширением zip, rar, svg и любым другим в разрешенные типы файлов вордпресс.

Что с этим делать по порядку:

  1. Откуда возникла эта проблема
  2. Существующие варианты её решения
  3. Самое простое решение для WordPress всех версий

Поехали.

    1. Предупреждение “Извините, этот тип файлов не разрешён из соображений безопасности

    В админке Вордпресс имеется раздел, при помощи которого можно легко и удобно загружать файлы, которые планируется использовать на страницах своего сайта. Зачастую это файлы изображений различного формата. Но иногда требуется загрузить какие-то более редкие, иногда совсем неожиданные расширения. Среди них встречаются расширения архивов (zip, rar, 7z), файлы векторной графики (svg) и многие другие.

    С самых ранних версий в системе управления контентом WordPress существует проверка на безопасность всех загружаемых файлов. Это доставляет некоторые неудобства при загрузке мультимедиа, но обойти ограничения до некоторых пор было несложно. Однако, начиная с версии Вордпресс 4.7.1 эта проверка на безопасность загружаемых файлов стала более углубленной. Теперь при попытке загрузить файл с расширением, не входящим в белый список стало появляться сообщение “Извините, этот тип файлов не разрешён из соображений безопасности”. Таким образом, загрузка файла с расширением svg теперь не представляется возможным. Более того, и обойти это неудобство начиная с WordPress версии 4.7.1 стало несколько сложнее, но всё же возможно. Об этом ниже.

    2. Способы обхода ограничения на загрузку файлов

    Проблема как в wordpress разрешить загрузку svg файлов или файлов zip возникла не вчера. За время существования этой закавыки умные пользователи CMS Вордпресс придумали множество решений на любой вкус.

    Мне знакомы следующие варианты расширения списка разрешенных типов файлов в wordpress:

    • Установка плагина от сторонних производителей. Способ не самый простой, т.к. плагин нужно найти, проверить на поддержку вашей версии WordPress и разобраться в его настройках и интерфейсе. Многие плагины устарели и потеряли поддержку авторов. Но, с другой стороны, кто ищет – тому всегда удаётся найти свеженький плагин для своей новой CMS. Для того, кто захочет пойти этой дорогой, я приведу здесь пару плагинов способных разрешить загрузку таких файлов, как svg или rar и других: WP Extra File Types (к сожалению, только на английском), Safe SVG (есть русский язык).
    • Редактирование файла wp-config.php. Этот вариант решения проблемы не очень хорош, потому что полностью отключает проверку файлов встроенную в Вордпресс, а значит резко снижает уровень защиты вашего сайта. Это решение неплохо использовать как временное. Когда ничего не помогает отключить эту треклятую ошибку “Извините, этот тип файлов не разрешён из соображений безопасности”, а нужно срочно это сделать – тогда идём по FTP на сервер, заходим в корневой каталог своего сайта, находим файл с названием wp-config.php, открываем его при помощи любого текстового редактора (подойдёт и Блокнот), в самом низу открываем новую строку нажав Enter и добавляем всего лишь одну строчку: define('ALLOW_UNFILTERED_UPLOADS', true); Теперь делаем попытку загрузить нужный файл через админ-панель wordpress. Ошибка должна уйти.
      • Теперь, наконец, самое благоразумное решение – разрешить загрузку zip файлов в wordpress или любых других файлов с нужным вам расширением, например, svg. Суть этого метода состоит в расширении белого списка возможных расширений загружаемых файлов. Для этого нужно внести изменения в файл functions.php, который несложно найти через админку самой WordPress. Ценность этой методики в том, что система безопасности Ворпресс продолжает работать в штатном режиме и вы можете об этом не волноваться. Подробности ниже.

      3. Простое и действенное решение для загрузки файлов zip и svg в WordPress 4.7.1 и выше

      Сразу к делу. Входим в админку (административную панель) Ворпресс и двигаемся по следующему пути. Панель слева: Внешний вид -> Редактор. В появившейся справа панели выбираем пункт Функции темы. Теперь в центральном окне виден код файла functions.php. Листаем вниз до самого конца. Вот так выглядят нужные вам пункты в админке WordPress:

      Листаем в конец файла и вставляем следующие строки:

      function add_upload_mimes($mimes_types){
        $mimes_types['zip'] = 'application/zip'; // Архивы zip
        $mimes_types['svg'] = 'image/svg';       // Векторная графика svg
        return $mimes_types;
      }
      add_filter( 'upload_mimes', 'add_upload_mimes' );

      Этого должно хватить для того, чтобы разрешить загрузку zip, а также разрешить загрузку svg файлов в WordPress устаревших версий (до 4.7.1). В том случае, если ваша CMS имеет версию 4.7.1 или ещё новее – вам понадобится еще несколько строк кода. Вот они:

      function add_upload_exception($types, $file, $filename, $mimes){
      
         $wp_filetype = wp_check_filetype( $filename, $mimes );
         $ext = $wp_filetype['ext'];
         $type = $wp_filetype['type'];
        if( in_array( $ext, array('zip', 'svg') ) ) {
          $types['ext'] = $ext;
          $types['type'] = $type;
        }
        return $types;
      }
      add_filter( 'wp_check_filetype_and_ext', 'add_upload_exception', 99, 4 );

      Добавляем этот код в тот же functions.php на самое последнее место.

      Осталось сделать в wordpress загрузку файлов в админке и проверить на сколько хорошо работают вставленные строчки кода. При добавлении очередного файла с расширением svg или zip сообшения “Извините, этот тип файлов не разрешён из соображений безопасности” появится не должно.

      Спасибо за внимание.

      Оставьте свой комментарий:

      Ваш email публиковаться не будет. Все поля обязательны.