Correct way of using wp_get_attachment_image() in wordpress

I’m looking for the correct way of using wp_get_attachment_image().

The following code:

Read More
<?php
    $args = array(
        'type' => 'attachment',
        'category_name' => 'portfolio'
        );
    $attachments = get_posts($args);
    print_r($attachments);
?>

Generates the following result:

Array
(
    [0] => stdClass Object
        (
            [ID] => 54
            [post_author] => 1
            [post_date] => 2010-06-22 00:32:46
            [post_date_gmt] => 2010-06-22 00:32:46
            [post_content] => <a href="http://localhost/wordpress/wp-content/uploads/2010/06/Capture.jpg"><img class="alignnone size-medium wp-image-55" title="Capture" src="http://localhost/wordpress/wp-content/uploads/2010/06/Capture-300x114.jpg" alt="" width="300" height="114" /></a> 
            [post_title] => Our Own Site
            [post_excerpt] => 
            [post_status] => publish
            [comment_status] => open
            [ping_status] => open
            [post_password] => 
            [post_name] => our-own-site
            [to_ping] => 
            [pinged] => 
            [post_modified] => 2010-06-22 00:40:22
            [post_modified_gmt] => 2010-06-22 00:40:22
            [post_content_filtered] => 
            [post_parent] => 0
            [guid] => http://localhost/wordpress/?p=54
            [menu_order] => 0
            [post_type] => post
            [post_mime_type] => 
            [comment_count] => 0
            [filter] => raw
        )
)

The following, however, doesn’t return anything.

<?php
    echo wp_get_attachment_image(54, array('300', '300'));
?>

What am I doing wrong here?

Related posts

Leave a Reply

3 comments

  1. Actually, I don’t think the accepted answer really answers the question.

    Your problem is that you’re passing in the post id (54 in your example; typically $post->ID in WP parlance) to wp_get_attachment_image(). As can be seen in the codex, you’re supposed to use the attachment id (see $attachment_id below):

    wp_get_attachment_image( $attachment_id, $size, $icon );
    

    In other words, you’ve got to do something like this:

    $image_attr = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'medium');
    
  2. wp_get_attachment_image function can accept four values as you can see:

    wp_get_attachment_image ( int $attachment_id, string|array $size = 'thumbnail', bool $icon = false, string|array $attr = '' )
    

    So i always use:

    <?php echo wp_get_attachment_image( get_the_ID(), array('700', '600'), "", array( "class" => "img-responsive" ) );  ?>
    

    Note: we can simply use get_the_ID() to pass id of active post. and here 700 is width and 600 is height of attachment image. we can also pass our class as array( “class” => “img-responsive” )

  3. The function wp_get_attachment_image only gets an image that was uploaded to wordpress, it doesn’t output an image in the content of the post.

    You have to output the content of the post for your example image.

    Like: echo $attachments['post_content'];