WordPress:特定のファイルタイプをアップロード可能・不可能にする方法

WordPress:特定のファイルタイプをアップロード可能・不可能にする方法

WordPressでデフォルトだとアップロードをしようとしてもエラーでアップロードできないものを可能にしたり、逆に問題なくアップロードできるものを意図的にアップロード不可能にする方法です。

functions.phpを使用するので、テーマ内にない場合は作成してください。

※以下で紹介している内容は、WordPress Ver 4.1で動作確認などしたものです。

デフォルトでアップロード可能なファイルタイプを確認する

現在使用しているWordPressがデフォルトでどのファイルならばアップロード可能なのかを確認したい時は、/wp-includes内にあるfunctions.phpで確認することができます。
Ver 4.1の場合は下記のように記述がされており、ここに記述されているものに関してはデフォルトでアップロードができます。

functions.php

function wp_get_mime_types() {
  return apply_filters( 'mime_types', array(
  // Image formats.
  'jpg|jpeg|jpe' => 'image/jpeg',
  'gif' => 'image/gif',
  'png' => 'image/png',
  'bmp' => 'image/bmp',
  'tif|tiff' => 'image/tiff',
  'ico' => 'image/x-icon',
  // Video formats.
  'asf|asx' => 'video/x-ms-asf',
  'wmv' => 'video/x-ms-wmv',
  'wmx' => 'video/x-ms-wmx',
  'wm' => 'video/x-ms-wm',
  'avi' => 'video/avi',
  'divx' => 'video/divx',
  'flv' => 'video/x-flv',
  'mov|qt' => 'video/quicktime',
  'mpeg|mpg|mpe' => 'video/mpeg',
  'mp4|m4v' => 'video/mp4',
  'ogv' => 'video/ogg',
  'webm' => 'video/webm',
  'mkv' => 'video/x-matroska',
  '3gp|3gpp' => 'video/3gpp', // Can also be audio
  '3g2|3gp2' => 'video/3gpp2', // Can also be audio
  // Text formats.
  'txt|asc|c|cc|h|srt' => 'text/plain',
  'csv' => 'text/csv',
  'tsv' => 'text/tab-separated-values',
  'ics' => 'text/calendar',
  'rtx' => 'text/richtext',
  'css' => 'text/css',
  'htm|html' => 'text/html',
  'vtt' => 'text/vtt',
  'dfxp' => 'application/ttaf+xml',
  // Audio formats.
  'mp3|m4a|m4b' => 'audio/mpeg',
  'ra|ram' => 'audio/x-realaudio',
  'wav' => 'audio/wav',
  'ogg|oga' => 'audio/ogg',
  'mid|midi' => 'audio/midi',
  'wma' => 'audio/x-ms-wma',
  'wax' => 'audio/x-ms-wax',
  'mka' => 'audio/x-matroska',
  // Misc application formats.
  'rtf' => 'application/rtf',
  'js' => 'application/javascript',
  'pdf' => 'application/pdf',
  'swf' => 'application/x-shockwave-flash',
  'class' => 'application/java',
  'tar' => 'application/x-tar',
  'zip' => 'application/zip',
  'gz|gzip' => 'application/x-gzip',
  'rar' => 'application/rar',
  '7z' => 'application/x-7z-compressed',
  'exe' => 'application/x-msdownload',
  'psd' => 'application/octet-stream',
  // MS Office formats.
  'doc' => 'application/msword',
  'pot|pps|ppt' => 'application/vnd.ms-powerpoint',
  'wri' => 'application/vnd.ms-write',
  'xla|xls|xlt|xlw' => 'application/vnd.ms-excel',
  'mdb' => 'application/vnd.ms-access',
  'mpp' => 'application/vnd.ms-project',
  'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
  'docm' => 'application/vnd.ms-word.document.macroEnabled.12',
  'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
  'dotm' => 'application/vnd.ms-word.template.macroEnabled.12',
  'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
  'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12',
  'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12',
  'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
  'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12',
  'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12',
  'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
  'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',
  'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
  'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12',
  'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template',
  'potm' => 'application/vnd.ms-powerpoint.template.macroEnabled.12',
  'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12',
  'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide',
  'sldm' => 'application/vnd.ms-powerpoint.slide.macroEnabled.12',
  'onetoc|onetoc2|onetmp|onepkg' => 'application/onenote',
  'oxps' => 'application/oxps',
  'xps' => 'application/vnd.ms-xpsdocument',
  // OpenOffice formats.
  'odt' => 'application/vnd.oasis.opendocument.text',
  'odp' => 'application/vnd.oasis.opendocument.presentation',
  'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
  'odg' => 'application/vnd.oasis.opendocument.graphics',
  'odc' => 'application/vnd.oasis.opendocument.chart',
  'odb' => 'application/vnd.oasis.opendocument.database',
  'odf' => 'application/vnd.oasis.opendocument.formula',
  // WordPerfect formats.
  'wp|wpd' => 'application/wordperfect',
  // iWork formats.
  'key' => 'application/vnd.apple.keynote',
  'numbers' => 'application/vnd.apple.numbers',
  'pages' => 'application/vnd.apple.pages',
  ) );
}

特定のファイルタイプをアップロード可能にする

今回は例として、現時点(Ver 4.1)ではアップロードすることができないSVGをアップロード可能にします。
デフォルトではSVGをアップロードしようとしても「このファイルタイプはセキュリティの観点から許可されていません。」とエラー表示されアップロードすることができませんが、下記をテーマ内のfunctions.phpに記述することで、SVGも問題なくアップロードできるようになります。

functions.php

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

特定のファイルタイプをアップロード不可能にする

先ほどとは逆にデフォルトで問題なくアップロードできるファイルタイプを意図的にアップロード不可能にする方法で、今回は例としてPSDをアップロードできないようにしてみます。
以下をテーマ内のfunctions.phpに記述することで、デフォルトでアップロードできていたPSDが「このファイルタイプはセキュリティの観点から許可されていません。」とエラー表示されてアップロードできなくなります。

functions.php

function custom_mime_types( $mimes ){
  unset( $mimes['psd'] );
  return $mimes;
}
add_filter( 'upload_mimes', 'custom_mime_types' );

Close the search window,
please press close button or esc key.