upload_mimes フックの使い方|説明・引数・注意点

説明

upload_mimes は、アップロードを許可するファイルの種類を変更するフィルターです。

基本構文

apply_filters( 'upload_mimes', array $mimes, int|WP_User|null $user )

引数

  • $mimes:拡張子とMIMEタイプの連想配列
  • $user:ユーザー

戻り値

許可するMIMEタイプの配列を返します。

使い方(サンプル)

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

注意点

  • SVGなど、スクリプトを含み得る形式を許可する場合は、セキュリティに注意します。

実務での使いどころ

  • メディアにアップロードできるファイルの種類を、追加・制限するとき。

よくあるミスと対処

  • SVGなど、スクリプトを含められるファイルを、誰でもアップロードできるようにしている。管理者に限定するだけでなく、信頼できる相手のファイルに限るか、サニタイズする仕組みを使う。環境によっては、wp_check_filetype_and_ext フィルターも必要になる。
  • 配列を、返していない。
  • 追加するときは、拡張子 => MIMEタイプ の形式で指定する。既存のキーは、jpg|jpeg|jpe のように、複数の拡張子を並べた形。

NG例

add_filter( 'upload_mimes', function ( $mimes ) {
	$mimes['svg'] = 'image/svg+xml'; // 誰でもアップロードでき、返してもいない
} );

OK例

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

使い分け早見表

フィルター・関数 役割
upload_mimes アップロードできる種類の、一覧
wp_check_filetype() 拡張子から、MIMEタイプを判定する
wp_handle_upload() アップロードを、処理する

関連項目

wp_check_filetype()、wp_handle_upload()

公式リファレンス:upload_mimes | WordPress Developer Resources

コメント

タイトルとURLをコピーしました