3

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);
1

1 Answer 1

0

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 );

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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