How To Retrieve An Image Attachment’s Alt Text?

I am using an attachment.php file to show large versions of images that have been clicked on elsewhere. I’d like to pull the image alt text as a caption under the image with javascript, but the alt text isn’t included when when wp_get_attachment_image_src() is used. I don’t think WP has a function to retrieve it, so I need my own. To write that function I need to know…Where is the alt text for an image stored?

My attachment page uses wp_get_attachment_image_src(), which doesn’t include the alt text.

<div class = "entry">
if ( wp_attachment_is_image( $post->id ) ) : 
    $att_image = wp_get_attachment_image_src( $post->id, "large");?>

    <a href="<?php echo wp_get_attachment_url($post->id); ?>" 
        title="<?php the_title(); ?>" 
    <img class="attached_img" 
        src="<?php echo $att_image[0];?>" 
        width="<?php echo $att_image[1];?>" 
        height="<?php echo $att_image[2];?>"  
        alt="<?php $post->post_excerpt; ?>" />
} <?php endif;?>

This shows:

<div class = "entry">
    <a href="" 
       <img class="attached_img" 
            alt="" />

I’m aware that the $post->post_excerpt is being called in the above code, but I am not sure what to replace it with to get the image’s alt attribute.


I recently did some research for a client project recently so lo-and-behold I get to use it here!

After the text you’ll see a categorized list of most (all?) of the image handling functions from within WordPress 3.0.1 (I grouped them in some semblance of order but don’t put too much credence in my categorization.)

Anyway, answering what (I think) you need instead of what you asked for (okay, I’ll answer that too, at the end) I think what you need is the wp_get_attachment_image() function which will return an HTML string containing these attributes:

  • 'src',
  • 'class',
  • 'alt' and
  • 'title'.

WordPress 3.0 Image Handling Functions

So here are WordPress’ image handling functions for your and other’s reference (jump below for the answer to your exact question):

Image Support/Thumbnails

  • set_post_thumbnail_size( $width = 0, $height = 0, $crop = FALSE )
  • add_image_size( $name, $width = 0, $height = 0, $crop = FALSE )
  • get_intermediate_image_sizes()
  • wp_constrain_dimensions( $current_width, $current_height, $max_width=0, $max_height=0 )


  • get_attached_file( $attachment_id, $unfiltered = false )
  • is_local_attachment($url)
  • update_attached_file( $attachment_id, $file )
  • wp_attachment_is_image( $post_id = 0 )
  • wp_count_attachments( $mime_type="" )
  • wp_delete_attachment( $post_id, $force_delete = false )
  • wp_get_attachment_image($attachment_id, $size="thumbnail", $icon = false, $attr="")
  • wp_get_attachment_image_src($attachment_id, $size="thumbnail", $icon = false)
  • wp_get_attachment_metadata( $post_id = 0, $unfiltered = false )
  • wp_get_attachment_thumb_file( $post_id = 0 )
  • wp_get_attachment_thumb_url( $post_id = 0 )
  • wp_get_attachment_url( $post_id = 0 )
  • wp_insert_attachment($object, $file = false, $parent = 0)
  • wp_update_attachment_metadata( $post_id, $data )

MIME Types

  • wp_match_mime_types($wildcard_mime_types, $real_mime_types)
  • wp_mime_type_icon( $mime = 0 )
  • wp_post_mime_type_where($post_mime_types, $table_alias="")


  • media_handle_upload()


  • _wp_relative_upload_path( $path )
  • wp_upload_dir( $time = null )


  • get_image_tag($id, $alt, $title, $align, $size="medium")

Low Level Image Handling:

  • wp_load_image( $file )
  • image_constrain_size_for_editor($width, $height, $size="medium")
  • image_downsize($id, $size="medium")
  • image_get_intermediate_size($post_id, $size="thumbnail")
  • image_hwstring($width, $height)
  • image_make_intermediate_size($file, $width, $height, $crop=false)
  • image_resize( $file, $max_w, $max_h, $crop = false, $suffix = null, $dest_path = null, $jpeg_quality = 90 )
  • image_resize_dimensions($orig_w, $orig_h, $dest_w, $dest_h, $crop = false)

As promised the Image’s 'alt' text is stored as a string in wp_postmeta with the meta_key of '_wp_attachment_image_alt'.

As you probably already know you can load it with a simple get_post_meta() like so:

$alt_text = get_post_meta($post->ID, '_wp_attachment_image_alt', true);

Leave a Comment