WordPressでは、SVGファイルをアップロードしようとすると、以下のように「セキュリティ上の理由によりこのファイル形式は許可されていません」とエラーが出て弾かれてしまいます。
“セキュリティ上の理由により”と書いてある通り、セキュリティ対策としてSVGファイルのアップロードはできないようにされています。テキストエディタで開いて編集可能というSVGの特性上、不正なコードを埋め込んで実行できてしまうからだと思われます。
それでも、どうしてもSVGファイルをアップロードしたいという場合は、Safe SVGというプラグインを導入するか、後述する方法でアップロードができるようになります。SVGファイルをアップロードして投稿内で使いたい、という場合は参考にしてください。
WordPressでSVGファイルをアップロードできるようにする方法
Safe SVGをインストールした方が簡単ですが、そのためだけにプラグインを入れたくないという場合は、SVGファイルをテキストエディタで開いてXML宣言を追加してあげれば、アップロード可能になります。
SVGファイルをテキストエディタで開いて、先頭行に以下を追記してあげましょう。
<?xml version="1.0" encoding="utf-8"?>
大抵の場合は、これでSVGファイルがアップロードできるようになります。
なぜかは不明ですが、SVGファイル内にXML宣言が記述されていてもアップロードできない場合もあります。XML宣言を追加してもアップロードできない場合は、Safe SVGプラグインを使いましょう。
あとがき
upload_mimesフックを使ってMIMEタイプを追加してみましたが、この方法ではアップロードできませんでした。
function add_svg_upload($file_types){
$add_filetypes = array();
$add_filetypes['svg'] = 'image/svg+xml';
$file_types = array_merge($file_types, $add_filetypes );
return $file_types;
}
add_action('upload_mimes', 'add_svg_upload');
WordPressでSVGファイルを扱うのはなかなか苦戦します(^^; 今のところは、Safe SVGを使うのが一番簡単で確実ですね。