I have a list of attachment IDs which are built using this array:
$all_images = get_posts( array(
'post_type' => 'attachment',
'numberposts' => -1,
) );
Is it possible to take the image ID from this list and find the Title and permalink of the POST the image is attached to?
I know it’s feasible because the Media Library shows it, but I can’t find the right way to do this with the codex.
I have tried this code, however it returns the title and permalink to the attachment itself, not the post it’s attached to:
$parent = get_post_field( 'post_parent', $imgID);
$link = get_permalink($parent);
So, if you start with this:
Then
$all_images
is an array of objects. Step through each one:Inside that foreach, you can use the normal parameters available to the
$post
object:$image->ID
is the ID of the attachment post$image->post_parent
is the ID of the attachment post’s parent postSo, let’s use that, to get what you’re after, using
get_the_title()
andget_permalink()
:That’s pretty much it!
Putting it all together:
The
$images
, is an array of post objects (attachments). You can usewp_list_pluck
to extract their parent’s ID into an array. (array_unique
andarray_filter
remove duplicate IDs and empty IDs respectively – this may /may not be desirable).You can them loop through the IDs and use
get_permalink
andget_the_title
to obtain the post’s permalink and title:We can use simply https://wordpress.org/plugins/find-posts-using-attachment/
I hope it is the best way!