get the attachement url for the medium sized image

The question:

Hi I’m using some code to create a slideshow with lytebox functionality – the following code is used in the loop to pull each image attached to a post in sequence.

It seems to be only pulling the large image, even thought I’ve set the value to medium – any ideas how I can get .wp_get_attachment_url($attachment->ID, ‘medium’, false, false) to be pulling the medium sized images?


$argsThumb = array(
'order'          => 'DESC',
'post_type'      => 'attachment',
'post_parent'    => $post->ID,
'post_mime_type' => 'image',
'post_status'    => null
$attachments = get_posts($argsThumb);
if ($attachments) {
foreach ($attachments as $attachment) {
echo '<div class="images"><a class="lytebox" href="' .wp_get_attachment_url($attachment->ID, 'medium', false, false). '" rel="nofollow noreferrer noopener"><img src="'.wp_get_attachment_url($attachment->ID, 'medium', false, false).'" /><div class="caption">'.apply_filters('the_content', $attachment->post_content).'</div></a></div>';


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

wp_get_attachment_url() will only return url to original attachment file, this function only accepts attachment id as parameter.

Use wp_get_attachment_image_src() or wp_get_attachment_image() instead.

Method 2

echo out the following: wp_get_attachment_image_src( $post->ID, 'medium')[0]; to the attachment url for the medium sized image.

Method 3

Update for those finding this all these years later. The function you want is called wp_get_attachment_image_url(). Documentation here.

All you need to do is give it the attachment ID and the size and it will return either a string of the image url or false.

Method 4

I don’t how above answer makes the answer.
wp_get_attachment_image_src need attachment id not post id.
<?php echo esc_url((wp_get_attachment_image_src( get_post_thumbnail_id(get_the_id()), 'medium')[0])?>

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