WordPressでファイルデータをメディアライブラリにアップロードしようとしたら「セキュリティ上の理由によりこのファイル形式は許可されません」とエラーになり、アップロードが出来なかった時の対処法をまとめました。
WordPressはアップロード許可しているファイルの形式が決まっており、それ以外のファイル形式をアップロードしようとするとエラーになってしまう仕様。
現在、使っているバージョンのWordPressがデフォルトでアップロード可能な形式は【 /wp-includes内のfunctions.php 】にて確認することができます。
FTPアップロード
FTPで該当ファイルをアップロードするのが一番確実で頻度が少ないデータをアップロードしたい場合はこの方法でいいと思います。
プラグインを利用する
この問題の対策について検索し複数のブログ等を見ている時、他の方々が紹介していたプラグインを記載しておきます。
私は使用していませんが複数の方が薦めていたのと日本語もあり、使い方を解説している記事もけっこうあったので類似プラグインと比べて使いやすそうです。
「WP Add Mime Types」
https://wordpress.org/plugins/wp-add-mime-types/
日本語
https://ja.wordpress.org/plugins/wp-add-mime-types/
functions.phpへアップロード可能ファイル形式を増やすコードを追記
※php編集する作業前に失敗した時に備えてバックアップを取っておきましょう
ダッシュボード → 外観 → テーマエディター → テーマ選択(子テーマ推奨) → functions.php
function.phpにアップロードできるファイル形式を増やす方コードを追記します。
//アップロード拡張子追加svg
function custom_mime_types( $mimes ) {
$mimes['svg'] = 'image/svg+xml';
return $mimes;
}
add_filter( 'upload_mimes', 'custom_mime_types' );
コード参照元【WordPress】セキュリティ上の理由によりこのファイル形式は許可されていません。SEO白書
https://ja.seo.jxyz.info/how-to-upload-unacceptable-on-wordpress/
上記のコードはsvg形式をアップロードできるようにするコードなのですが形式の追加はsvg以外でもできます
【$mimes[‘ .を除いた拡張子名 ‘] = ‘ MIMEタイプ ‘;】の書き方で追記すればアップロードが出来るようになると思われます。
MIME タイプの不完全な一覧 – HTTP | MDN
https://developer.mozilla.org/ja/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types
Media Types(IANA)
https://www.iana.org/assignments/media-types/media-types.xhtml
ContentType Checker
https://kimurashuuichi.com/programming/perl/programmingsupport/contenttype.html#part2
MIME-Type / Content-Type Check
https://fabianstiehle.com/mimetype/
書き方が何通りかある拡張子もあるので『mime type (拡張子名)』や『WordPress アップロード(拡張子名)』で検索すればヒットすることが多いので検索して調べた後で追記するとよいと思います。
.htaccessへ追記(サーバー側設定変更)
サーバー側の設定を変更する必要があるケースもあるようです。
AddType MIMEタイプ 拡張子名 で書いて設定します。
AddType image/svg+xml .svg
コード参照元WordPressでSVG取扱い可能にすると、ロゴ画像やバナーを美しく表現できる | NORILOG(ノリログ)- カメラとWordPressとガジェット紹介ブログ
https://noripon.blog/2016/05/03/wordpress-svg/
AddTypeは指定ファイル拡張子を指定されたコンテンツタイプにマップするというMIMEタイプの設定を宣言する方法のようです。
AddType ディレクティブ
http://httpd.apache.org/docs/2.2/mod/mod_mime.html#addtype
SVGファイルにXML宣言追加(SVGがアップロードできない場合)
SVGファイルをテキストエディタ等で開き、XML宣言が入ってない場合は最初の行にXML宣言を追記します。
<?xml version="1.0" encoding="utf-8"?>
コード参照元WordPress 4.9.9でSVGがアップロードできない!原因と応急処置 | Rriver
https://parashuto.com/rriver/development/wordpress-4-9-9-svg-upload
上記のいくつかの方法を行っても「セキュリティ上の理由によりこのファイル形式は許可されません」になってしまいアップロードできない場合もあります。私は.aiデータが許可になりませんでした(FTPアップロードは除く)
許可にならなかった拡張子に関してはアップロード頻度がそこまで高いのでなければFTPアップロードが無難かもしれません。