wp_handle_upload() の使い方|説明・引数・注意点

説明

wp_handle_upload() は、アップロードされたファイルを検証し、アップロードディレクトリに移動する関数です。

基本構文

wp_handle_upload( array $file, array|false $overrides = false, string|null $time = null ): array

引数

  • $file:$_FILES の要素
  • $overrides:test_form、mimes などの設定
  • $time:保存先の年月

戻り値

成功時は file、url、type を含む配列。失敗時は error を含む配列。

使い方(サンプル)

require_once ABSPATH . 'wp-admin/includes/file.php';
$res = wp_handle_upload( $_FILES['my_file'], array( 'test_form' => false ) );

注意点

  • メディアライブラリには登録されません。登録するには wp_insert_attachment() を呼びます。
  • 許可するファイル種別は mimes で制限します。

実務での使いどころ

  • アップロードされたファイルを、アップロードフォルダへ移すとき。
  • メディアへの登録は、別に行いたいとき。

よくあるミスと対処

  • フォームからでない場合に、test_form を false にしていない。エラーになる。
  • 戻り値の error を、確認していない。失敗しても、エラーがキーとして返る。
  • フロント側で、管理画面用のファイル(wp-admin/includes/file.php)を、読み込んでいない。
  • 登録まで終わったと思っている。この関数は、メディアへの登録を行わない。

NG例

$result = wp_handle_upload( $_FILES['photo'] ); // 条件によって、エラーになる

OK例

require_once ABSPATH . 'wp-admin/includes/file.php';
$result = wp_handle_upload( $_FILES['photo'], array( 'test_form' => false ) );
if ( isset( $result['error'] ) ) {
	return;
}
$file = $result['file'];
$url  = $result['url'];

使い分け早見表

関数 役割
wp_handle_upload() ファイルを移すだけ(メディアには登録しない)
media_handle_upload() 移動・登録・サムネイル生成まで、行う
wp_insert_attachment() ファイルを、メディアとして登録する

関連項目

media_handle_upload()、wp_upload_dir()、wp_insert_attachment()

公式リファレンス:wp_handle_upload() | Function | WordPress Developer Resources

コメント

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