You can modify an existing media library image using wp_insert_attachment by setting the ID key in the parameter array.
$attachment = array(
'ID' => $existing_library_attachment_id,
'post_parent' => $custom_post_id
);
wp_insert_attachment( $attachment );
This will update the attachment post with ID $existing_library_attachment_id to have a post_parent value of $custom_post_id. However, the only thing this will affect is the permalink of the attachment post. Unless you do something else to edit your custom post itself, you won’t see any changes on that post.
Here are some things you can do to attach the image to your post:
-
To make the image the “featured image” of your post, use the
set_post_thumbnailfunction:set_post_thumbnail( $custom_post_id, $existing_library_attachment_id ); -
To show the picture in the content area of your post, you need to edit the post_content of your post (with
wp_update_post, for example). To add an individual image to your post, you can add an<img>tag (perhaps using theget_image_tagfunction). If you want to add a gallery, use theshortcode.