CODEMemorandum

【WordPress】管理画面からSVGファイルをアップロードする

WordPressは、デフォルトで管理画面からアップロードできるファイル形式が決まっていて、それ以外の形式はアップロードできません。SVGファイルもデフォルトではアップロードできないファイル形式のひとつです。

使用しているテーマのfunctions.phpに設定を追記

functions.phpに以下のコードを追記します。
これだけでSVGファイルがアップロードできるようになります。
SVGだけでなく、他の形式のファイルも追加可能です。

function custom_mime_types($mimes) {
  $mimes['svg'] = 'image/svg+xml';
  return $mimes;
}
add_filter('upload_mimes', 'custom_mime_types');

ちなみに、デフォルトで許可されているファイル形式を削除したい場合(アップロードしたくない形式を指定したい場合)は、以下の方法でいけます。

function custom_mime_types($mimes) {
  $mimes['svg'] = 'image/svg+xml';

  //アップロードできる形式から削除
  unset( $mimes['exe'] );

  return $mimes;
}
add_filter('upload_mimes', 'custom_mime_types');

コードを追加してもSVGファイルがアップロードできない場合

functions.phpに上記コードを追記した後、実際にSVGファイルをアップロードしてみると、なぜかアップロードできるファイルとできないファイルがありました。
調べたところ、SVGファイル内の先頭に以下の1行が入っていないとアップロードできないようです。
アップロードできなかったファイルを見てみると、この1行がコメントアウトされていました。
コメントを外したところ無事アップロードすることができました。

<?xml version="1.0" encoding="UTF-8"?>