WordPressで.flvの拡張子を登録しないとエラーが表示される

  • 2009 年 3月 30 日
  • kosuke

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に登録すればよいかと。

“WordPressで.flvの拡張子を登録しないとエラーが表示される” に コメントはありません

コメントをどうぞ