【WordPress】media_handle_upload関数で複数ファイルをアップロードする方法

スポンサーリンク

<input type="file" name="hoge[]" multiple>
上記HTMLの場合、以下の処理で複数ファイルをメディアライブラリに登録することができる。

$files = $_FILES['hoge'];
foreach ($files['name'] as $key => $value) {
    if ($files['name'][$key]) {
        $_FILES = ["my_file" => [
            'name' => $files['name'][$key],
            'type' => $files['type'][$key],
            'tmp_name' => $files['tmp_name'][$key],
            'error' => $files['error'][$key],
            'size' => $files['size'][$key]
        ]];
        $attachmentId = media_handle_upload("my_file", 0);
    }
}

処理の内容

media_handle_upload関数はmultipleには対応していないため、$_FILESに手動でアップロードファイル情報をセットする必要がある。

配列として受け取ったデータをループで1件ずつ$_FILESにセットし、media_handle_upload関数を実行することで複数のファイルをアップロードすることができる。

"my_file"は疑似のname属性なので、どんな文字列でも構わない。

コメント