Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I'm retroactively creating a post with wp_insert_post() and attaching a featuring image to it. I need the image to go into the folder that corresponds to the post's publishing date.

I'm using time parameter in wp_handle_upload function that supposed to move files to the directories according to the parameter value (see in the code - $upload_date - static value for now). But right now the image moves to the current year/month folder ignoring $upload_date (Ex.: Supposed to go 2007/11, goes to 2012/12).

    $output_dir = $uploads['path'];
    new_filepath = $output_dir.'/'.$file;


// INSERT POST AND GET POST ID  
    $my_post_id = wp_insert_post($my_post);


// Copy image from my folder to WP Uploads
    rename($filename,$new_filepath);


// required for wp_handle_upload() to upload the file
    $upload_overrides = array( 'test_form' => FALSE );

    $upload_date = '2007/11'; // Using this date for testing purposes

    $movefile = wp_handle_upload( $new_filepath, $upload_overrides, $upload_date ); 

    $wp_filetype = wp_check_filetype(basename($new_filepath), null );
    $attachment = array(
         'post_mime_type' => $wp_filetype['type'],
         'post_title' => $post_title,
         'post_content' => $post_content,
         'post_status' => 'inherit'
    );
    $attach_id = wp_insert_attachment( $attachment, $new_filepath, $my_post_id );
    $attach_data = wp_generate_attachment_metadata( $attach_id, $new_filepath );
    wp_update_attachment_metadata( $attach_id, $attach_data );


// ADD FEATURED IMAGE TO THE POST
    add_post_meta($my_post_id, '_thumbnail_id', $attach_id);
share|improve this question
1  
You just closed another question that was substantially the same as this one: webcache.googleusercontent.com/… –  s_ha_dum Dec 26 '12 at 20:12
add comment

1 Answer

Before copying files (rename()) to the final destination I set time parameter for wp_upload_dir() (instead of trying to make wp_handle_upload() to pass it) and it transfers files to appropriate directories now.

$uploads = wp_upload_dir($upload_date);

$output_dir = $uploads['path'];

rename($filename,$new_filepath);

share|improve this answer
add comment

Your Answer

 
discard

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.