check_upload_mimes()
は、ユーザーがファイルをアップロードする際に、そのファイルの MIME タイプが許可されたものであるかを検証するための WordPress コア関数です。
主にアップロード処理中に使用され、アップロード可能な拡張子と MIME タイプの整合性を確認・調整する際に役立ちます。この関数は特定のユーザー権限や条件に応じて MIME タイプを動的に制御したい場面に便利です。
基本構文
$allowed_mimes = check_upload_mimes( $user );
$user
:アップロードを行おうとしているユーザーの情報(WP_User
オブジェクトやユーザー ID)- 戻り値は、そのユーザーが許可されている MIME タイプの配列です。
- 例えば、マルチサイト環境やユーザー権限ごとにアップロード制限を行いたい場合などに使用されます。
引き数と戻り値
引数名 | 型 | 説明 |
---|---|---|
$file | array | $_FILES 配列の1要素。アップロードされたファイル情報を含む連想配列。 |
戻り値名 | 型 | 説明 |
---|---|---|
$file | array | 元の $file 配列に 'error' キーが追加される場合があります。ファイルサイズ制限に違反していると、その旨のエラーメッセージが格納されます。制限内であれば変更はありません。 |
使用例
タグを使った使用例
function my_check_user_mimes( $user_id ) {
$mimes = check_upload_mimes( $user_id );
echo '<pre>';
print_r( $mimes );
echo '</pre>';
}
この関数を呼び出すと、指定ユーザーがアップロード可能な MIME タイプ一覧が表示されます。
特定のユーザー権限に応じたカスタム MIME 制御の基礎として活用できます。
注意点
- 管理者ユーザーと一般ユーザーでは許可される MIME タイプが異なる場合があります。
- この関数は MIME タイプの検証を行うものではなく、「現在の許可設定の一覧を取得する」機能に過ぎません。
- MIME タイプの変更には
upload_mimes
フィルターを使用します。
よく一緒に使われる関数
wp_get_current_user()
$current_user = wp_get_current_user();
$mimes = check_upload_mimes( $current_user );
現在ログインしているユーザーの MIME 許可一覧を取得する際に使います。
current_user_can()
if ( current_user_can( 'manage_options' ) ) {
$mimes = check_upload_mimes( get_current_user_id() );
}
管理者ユーザーかどうかで MIME 許可内容を条件分岐させることができます。
upload_mimes
フィルター
add_filter( 'upload_mimes', 'my_custom_mimes' );
function my_custom_mimes( $mimes ) {
$mimes['svg'] = 'image/svg+xml';
return $mimes;
}
実際に許可される MIME タイプを動的に追加・削除したいときに使用します。
想定されるトラブル
特定の拡張子のファイルがアップロードできない
check_upload_mimes()
は拡張子が upload_mimes
フィルターに存在しているか確認するため、SVGやWEBPなどが許可されていないとアップロードできません。
解決方法
upload_mimes
フィルターを使って MIME タイプを追加する。
add_filter( 'upload_mimes', function( $mimes ) {
$mimes['webp'] = 'image/webp';
return $mimes;
} );
マルチサイト環境で MIME タイプが異なる
マルチサイトではサイトネットワーク全体のアップロード設定が site_option_upload_filetypes
で制御され、check_upload_mimes()
の挙動が変化します。
解決方法
ネットワーク管理画面で「許可ファイルタイプ」を確認し、必要な拡張子を追加する。
Q&A
まとめ
check_upload_mimes()
は、WordPress でファイルアップロード時に許可されている MIME タイプの一覧を取得するための関数です。
ユーザー権限や環境により許可内容が異なるため、柔軟に確認したい場合に役立ちます。MIME タイプの追加・削除は upload_mimes
フィルターを通じて制御し、チェックやログ出力には本関数を利用するのが基本です。
コメント