WordPressで.flvの拡張子を登録しないとエラーが表示される
- 2009 年 3月 30 日
WordPressでムービーファイルなどの管理をする際、管理画面からメディアのアップロードを行いますが、管理画面からflvファイルをアップロードした時にエラーが表示されてアップできないことがあります。
この時に表示されるエラーは「ファイルタイプがセキュリティガイドラインを満たしていません。別のファイルタイプを試してください。」という以下のエラー。
ユーザーが管理者の権限だとこのエラーは起きずに無事アップロードできちゃうので最初は気づかなかった。調べてみたら公式ページにあっさり答えがありました。
FAQ/WordPress 2.5 – WordPress Codex 日本語版
特定のタイプのファイルがアップロードできなくて、”ファイルタイプがセキュリティガイドラインを満たしていません。別のファイルタイプを試してください。”と表示されます。
WPに定義していない拡張子はブロックされちゃうから登録してね、ということらしい。
なるほどflvじゃなくても知らない拡張子は全部NOってことね。
1)WordPressをCMSとして第三者に使ってもらうならユーザー権限を管理者以外にすることは多々あると思います。
2)Flashコンテンツの管理ページとしてWordPressを使うならflvをアップするケースは多々あると思います
3)1)と2)を満たすというケースが多少あると思います……というレアケースだろって話に備えて拡張子を登録しておきましょう。
公式のページの指示に従ってwordpressのディレクトリの中にあるwp-includes/functions.phpを開いて、wp_check_filetypeとwp_ext2type関数を修正。
wp_ext2type
function wp_ext2type( $ext ) { $ext2type = apply_filters('ext2type', array( 'audio' => array('aac','ac3','aif','aiff','mp1','mp2','mp3','m3a','m4a','m4b','ogg','ram','wav','wma'), 'video' => array('asf','avi','divx','dv','mov','mpg','mpeg','mp4','mpv','ogm','qt','rm','vob','wmv','flv','f4v'), 'document' => array('doc','docx','pages','odt','rtf','pdf'), 'spreadsheet' => array('xls','xlsx','numbers','ods'), 'interactive' => array('ppt','pptx','key','odp','swf'), 'text' => array('txt'), 'archive' => array('tar','bz2','gz','cab','dmg','rar','sea','sit','sqx','zip'), 'code' => array('css','html','php','js'), )); foreach ( $ext2type as $type => $exts ) if ( in_array($ext, $exts) ) return $type; } |
‘video’ => array(‘asf’,’avi’,’divx’,’dv’,’mov’,’mpg’,’mpeg’,’mp4′,’mpv’,’ogm’,’qt’,’rm’,’vob’,’wmv’,‘flv’,’f4v’)
videoにflvを追加、ついでにFlashPlayer10からのMPEG4フォーマットの拡張子、f4vも登録しておく。
wp_ext2typeは、拡張子に対して表示されるアイコンを登録しているので正しいarrayに登録しよう。
wp_check_filetype
function wp_check_filetype( $filename, $mimes = null ) { // Accepted MIME types are set here as PCRE unless provided. $mimes = ( is_array( $mimes ) ) ? $mimes : apply_filters( 'upload_mimes', array( 'flv' => 'video/x-flv', 'f4v' => 'video/mp4', 'jpg|jpeg|jpe' => 'image/jpeg', 'gif' => 'image/gif', 'png' => 'image/png', 'bmp' => 'image/bmp', 'tif|tiff' => 'image/tiff', 'ico' => 'image/x-icon', 'asf|asx|wax|wmv|wmx' => 'video/asf', 'avi' => 'video/avi', 'divx' => 'video/divx', 'mov|qt' => 'video/quicktime', 'mpeg|mpg|mpe|mp4' => 'video/mpeg', 'txt|c|cc|h' => 'text/plain', 'rtx' => 'text/richtext', 'css' => 'text/css', 以下略 |
‘flv’ => ‘video/x-flv’
‘f4v’ => ‘video/mp4’
を適当なところに追加。
これで晴れて管理者以外でも、flvファイルとf4vファイルをアップできるようになる。
flv以外の未知の拡張子の時は、その用途にあったwp_ext2typeのarrayに登録して、MIMEタイプをwp_check_filetypeに登録すればよいかと。