I’m looking for the correct way of using wp_get_attachment_image().
The following code:
<?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?
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) towp_get_attachment_image()
. As can be seen in the codex, you’re supposed to use the attachment id (see$attachment_id
below):In other words, you’ve got to do something like this:
wp_get_attachment_image function can accept four values as you can see:
So i always use:
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” )
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'];