I'm having trouble to add a featured image to an existing post via PHP. The image resides on wp-content/upload folder. The script i'm doing, is not a plugin, theme, or something like that. It's just an automation script that runs whenever it's called.

What is the best approach for this case?

  • Post your code please. Where is the code located? And when/how is it "called"?
    – s_ha_dum
    Jan 15, 2014 at 20:32

1 Answer 1


The trick is media_sideload_image() and set_post_thumbnail(). media_sideload_image() assumes you can grab the URL to the image, whether it exist in /wp-content/ or somewhere else (another site, even). As long as you can programmatically reference the image's URL, something like this should work.

$image = 'image.jpg';
$media = media_sideload_image($image, $post->ID);
if(!empty($media) && !is_wp_error($media)){
    $args = array(
        'post_type' => 'attachment',
        'posts_per_page' => 1,
        'post_status' => 'any',
        'post_parent' => $post->ID

    // reference new image to set as featured
    $attachments = get_posts($args);

        foreach($attachments as $attachment){
            set_post_thumbnail($post->ID, $attachment->ID);
            // only want one image

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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