Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

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">
<?php 
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(); ?>" 
        rel="attachment">
    <img class="attached_img" 
        src="<?php echo $att_image[0];?>" 
        width="<?php echo $att_image[1];?>" 
        height="<?php echo $att_image[2];?>"  
        class="attachment-medium" 
        alt="<?php $post->post_excerpt; ?>" />
    </a> 
} <?php endif;?>
</div>

This shows:

<div class = "entry">
    <a href="http://www.example.com/wp-content/uploads/2010/07/photo_namejpg" 
       title="My_Photo_Title" 
       rel="attachment">
       <img class="attached_img" 
            src="http://www.example.com/wp-content/uploads/2010/07/photo_name_and_size.jpg" 
            width="393" 
            height="500"  
            class="attachment-medium" 
            alt="" />
    </a>
</div>  

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.

share|improve this question

2 Answers 2

up vote 32 down vote accepted

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

Attachment

MIME Types

Uploads

Filesystem

HTML

Low Level Image Handling:


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);

share|improve this answer
    
Well, I can't but help feel a little dopey now that you've said it. I've used wp_get_attachment_imgage() before and completely forgot about it. You are right about what I you thought I actually need. Thanks for the info. You are also right about where the alt meta is stored...I looked in that very place, but it evaded me even though I must have been staring right at it. That's what I get for getting into it at the end of the day. Thanks again! –  kevtrout Aug 31 '10 at 11:04
    
Hey, no problem. I've asked some really obvious questions in the recent past too on the hackers list only to have the answer be glaringly obvious to be as soon as someone mentioned it. It's easy to miss something here or there. But the real benefit of WordPress Answers is every question and answer becomes a resource for others with similar questions in the future. I even expect I'll google thing I answered but forgot at points in the future! –  MikeSchinkel Aug 31 '10 at 11:44
    
Quick question: you indicated that wp_get_attachment_image() returns an array of the image src and attributes. It seems to only return html containing the image and it's attributes. Still does the job, just didn't know if you were aware of something not on the function ref: codex.wordpress.org/Function_Reference/wp_get_attachment_image –  kevtrout Aug 31 '10 at 15:21
    
@kevtrout: (redfaced) - You sir are correct. For once here on StackExchange I just read the code and wrote this w/o testing it. I'll update the answer later after I take care of client obligations. –  MikeSchinkel Aug 31 '10 at 18:00
    
@Mike - Just a quick reminder to update the note about wp_get_attachment_image as an array - that stumped me a bit :). Excellent answer otherwise! –  Jonathan Wold Jul 12 '11 at 21:02

I found out that the Alt text for attachments was stored on a custom meta called "_wp_attachment_image_alt"

So having the attachment's Id, I was able to get the alt text with this code:

<?php echo get_post_meta($attachment_id, '_wp_attachment_image_alt', true) ?>
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.