check_upload_size() は、ユーザーがアップロードしようとしているファイルサイズが WordPress のアップロード制限内に収まっているかどうかを検証する関数です。
主にファイルアップロード時のバリデーション処理として使用され、ファイルサイズの上限を超えるとエラーを返します。特に独自アップローダーを実装する際に、ファイル容量制限のチェックとして役立ちます。
基本構文
$result = check_upload_size( $file );$file:アップロード対象のファイル情報($_FILES['input_name']のような配列形式)- 戻り値は、正常なら
true、サイズ制限に違反していればWP_Errorオブジェクトが返ります。
引き数と戻り値
| 引数名 | 型 | 説明 |
|---|---|---|
$file | array | $_FILES 配列の1要素。アップロードされたファイルの情報を含む連想配列。 |
| 戻り値名 | 型 | 説明 |
|---|---|---|
$file | array | 元の $file 配列に 'error' キーが追加されて返されます。制限を超えている場合はエラーメッセージが格納されます。 |
使用例
タグを使った使用例
if ( isset( $_FILES['my_file'] ) ) {
$result = check_upload_size( $_FILES['my_file'] );
if ( is_wp_error( $result ) ) {
echo 'ファイルサイズが大きすぎます: ' . $result->get_error_message();
} else {
echo 'アップロード可能です。';
}
}このコードでは、ユーザーがアップロードしようとしているファイルサイズがサーバー制限内であるかをチェックし、エラーメッセージも表示されます。
注意点
- この関数は PHP の
upload_max_filesizeや WordPress のupload_size_limitに基づいて判定しています。 - アップロードサイズの制限は、
php.iniの設定値やマルチサイト設定に依存することがあります。 $_FILES配列形式でファイル情報を渡す必要があります(tmp_name,size,nameなどを含む)。
よく一緒に使われる関数
wp_handle_upload()
if ( check_upload_size( $_FILES['my_file'] ) === true ) {
$upload = wp_handle_upload( $_FILES['my_file'], array( 'test_form' => false ) );
}アップロードチェック後に実際のファイルアップロード処理を行う際に併用されます。
is_wp_error()
$result = check_upload_size( $_FILES['my_file'] );
if ( is_wp_error( $result ) ) {
echo $result->get_error_message();
}エラーの有無を判定し、エラー詳細を取得するのに使います。
wp_max_upload_size()
$max_size = wp_max_upload_size();
echo '最大アップロードサイズは: ' . size_format( $max_size );現在の最大アップロードサイズ(バイト)を取得して、参考として表示するのに役立ちます。
想定されるトラブル
小さいファイルでもエラーになる
ファイルが小さくても php.ini の設定が極端に小さい (upload_max_filesize, post_max_size) とエラーになる。
解決方法
サーバー管理者に依頼して upload_max_filesize を増やす。もしくは .htaccess や wp-config.php にて設定変更。
マルチサイト環境で制限が厳しい
マルチサイトではネットワーク管理者がアップロード制限(upload_filetypes, upload_size_limit)を設定している場合がある。
解決方法
ネットワーク管理画面 → 「ネットワーク設定」から制限を変更。
Q&A
まとめ
check_upload_size() は、WordPress におけるファイルアップロード前の容量チェックを行うための便利な関数です。
$_FILES 配列と組み合わせて、動的にファイルサイズ制限の検証が可能です。アップロード制限に関するトラブルを事前に防ぐために、ユーザー入力チェックや独自アップローダーの実装時に積極的に活用しましょう。
コメント