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?
thanks
<?php
$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 stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0