WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am trying to create a public form where users can upload multiple images to be attached to a particular post. I am able to get it to work with single images thanks to this post at Golden Apples Design.

The problem is that I'm struggling with multiple file uploads. I've changed

<form method="post" action="#" enctype="multipart/form-data" >
  <input type="file" name="upload_attachment">
  <input type="submit">


<form method="post" action="#" enctype="multipart/form-data" >
  <input type="file" multiple=multiple name="upload_attachment[]">
  <input type="submit">

Now the $_FILES array is in a different format and the file handler doesn't handle it properly. Can anyone help me figure out how to loop through the array in the correct way and feed the file hander the format it wants?

share|improve this question
up vote 1 down vote accepted

This may not be the most elegant way to do it (I'm not sure if overwriting the $_FILES global is even allowed) but this seems to work:

global $post;
if ($_FILES) {
    $files = $_FILES['upload_attachment'];
    foreach ($files['name'] as $key => $value) {
        if ($files['name'][$key]) {
            $file = array(
            'name'     => $files['name'][$key],
            'type'     => $files['type'][$key],
            'tmp_name' => $files['tmp_name'][$key],
            'error'    => $files['error'][$key],
            'size'     => $files['size'][$key]

            $_FILES = array("upload_attachment" => $file);

            foreach ($_FILES as $file => $array) {
                $newupload = wp_insert_attachment($file,$post->ID);
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.