How can I determine if a post has an image attachment?

The question:

As far as I know, there’s not a simple function that will return true if a post has an attachment. With that in mind, what’s the best way to determine if a post has an attachment (or even better, has an image attachment)? I’m automatically inserting a shortcode on posts, but would like that to only happen if there is actually an image attached to the post.

The Solutions:

Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.

Method 1

I think this should work:

$attachments = get_children( array('post_parent' => get_the_ID(), 'post_type' => 'attachment', 'post_mime_type' => 'image') );

if ( $attachments ) {

 // do conditional stuff here 


All methods was sourced from or, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Comment