WordPressでSVGファイルをアップロードできるようにする方法

WordPress WordPress
記事内に広告が含まれています。

WordPressでSVGファイルをメディアへアップロードしようとしたら、いつの間にやら
セキュリティ上の理由によりこのファイル形式は許可されていません
というエラーメッセージが出るようになっていました。

せっかくロゴ画像をsvgファイルで作成したのになんてこと。。。
ということで、せっかくなのでプラグインを使わずに functions.php を編集することで対応したいと思います。

svgファイルをアップロードできない理由と対策方法

イメージ

セキュリティ上の理由によりこのファイル形式は許可されていません

アップロードできない原因はセキュリティアップデート

どうやら、WordPress 4.7あたりのバージョンアップでセキュリティ機能が強化され、メディアアップロード時にMIMEタイプのチェックが行われるようになりました。

ちなみにそれまでは、テキストファイル(.txt)を画像ファイルの拡張子(.jpg や .png)に書き換えてアップロード出来ていた様子。それが、拡張子と実際のファイルの中身をチェックして異なる場合は怪しいファイルと見なされてアップできないようになっているようです。

しかしながら、それで何故.svgファイルでエラーが出るのかがよく分かりません。
試しにエクセルファイル(.xlsx)やPDFをメディアアップロードしたところ、それらは問題なくアップロードできました。

原因をざっと調査したところ、

  • WordPress自体の不具合
  • レンタルしているサーバのPHPバージョン
  • WordPressが許可しているMIMEタイプの設定

など色々と出てきましたが、私の環境の場合は3つめに挙げた

WordPressが許可しているMIMEタイプの設定

が原因っぽかったです。

WordPressにてアップロードできるファイルは、許可されているファイルタイプのみできるよう設定されています。
その設定は「wp-includes」の中の functions.php にて行われています。

該当箇所を書き出すと、このようになっています。
なお、バージョンはこのポストを書いている時点での最新バージョンである4.9.1です。

設定を見る限り.svgファイルは許可されていません。
なので、「セキュリティ上の理由によりこのファイル形式は許可されていません」が表示されたようです。

納得。

svgファイルをアップできるよう対策

ということで、対策です。
WP上、functions.php コアファイルに含まれますが、そこ設定が書かれているということは、
使用しているテーマの functions.php に記述すれば設定が可能です。

functions.php の一番最後など、任意の箇所に以下のように書けば解決です。

これでアップロード可能です。

↑ アップロードしてみました。

サムネイルが見えていませんが、このブログのロゴ画像は.svgファイルにて作成しているので、
表示されるってことはアップロードが成功しているって事ですね。

関連するかもしれないポスト

ContactForm7で送信されたメールがGmailで迷惑メールにフィルタされる場合の対処法
稀ですが、ブログに載せている技術系のネタに対して、お問い合せメールが来ることがあります。その際、サイト備え付けのメールフォーム(ContactForm7プラグイン)で送信して頂くと、こちらのGmailの迷惑フォルダに入るという事態に。 今年に入って気づいたので、もしかしたら今までにも気づかなかったメールがあるかと思うと、申し訳ない思いです。 ということで、この現象を打開する方法を紹介したいと思います。
WordPress
スポンサーリンク
toogieをフォローする
タイトルとURLをコピーしました