Removing all Media attached to a deleted revision
-
I wrote a cron job to delete revisions for posts older than 4 weeks, and then remove any unattached media.
// delete old revisions global $wpdb; $num1 = $wpdb->query("DELETE FROM
".$wpdb->posts."
WHEREpost_type
= 'revision'"); // clean orphaned post meta. $num2 = $wpdb->query("DELETE pm FROM".$wpdb->postmeta."
pm LEFT JOIN".$wpdb->posts."
p ON pm.post_id = p.ID WHERE p.ID IS NULL"); // delete unattached attachments (images & videos not referenced in any posts) $attachments = get_posts([ "post_type" => "attachment", "numberposts" => -1, "post_parent" => 0, "fields" => "ids", ]); foreach ($attachments as $id) { wp_delete_attachment($id, true); }But unfortunately, attachments that only exist in a revision remain but really have no reference in the post content.
The attachments still retain a parent_post value of the published post, and there is no apparently easy way to detect if the attachment is contained within the post.
So now I have a load of attachements relating to posts which actually do not reference them in the content.
How do I know which ones are actually referenced in the post besides parsing the content?
I’m 99% sure of the answer but just want to check that there isn’t a better solution.
- The topic ‘Removing all Media attached to a deleted revision’ is closed to new replies.