In the media library every attachment post has an “Attached to” column. I’ve developed a plugin that adds author profile and a facebook like banner image.
I now discovered that the attachment posts, that are used as profile pictures, are not marked as “attached to”.
I used a wordpress console plugin to get WP_Post
objects of a linked and of an unlinked attachment. But I couldn’t find any difference between them that I could use to set it manually.
Is there any way to set the attached ststus of attachment posts?
1 Answer
Attachments are attached to a parent post. So when you get an attachment object, look into $attachment->post_parent
. If that is 0
, the file is not attached.
The parent post ID refers always to another post in the posts
table, never to an user. To attach the file to a user, you could create a hidden custom post type and one entry per user. But I don’t think it is worth the efforts. There is nothing wrong with unattached files.
To change the post_parent
value use wp_update_post()
.
Pseudo-code, not tested:
$att = get_post( $attachment_id );
$att->post_parent = $new_parent_id;
wp_update_post( $att );