wp_get_attachment_image() not working when trying to add width and height attributes

I am using wp_get_attachment_image() to try and output an img tag with width and height attributes.

Here is my code:

Read More
$thumb_src = wp_get_attachment_image( $id, 'thumbnail', false, array('width'=> '10', 'height' => '10' ));
$thumb_output = "<li>".$thumb_src."</li>";

I was expecting this to output:

<li><img width="10" height="10" src="http://..../wp-content/uploads/2011/01/pic-150x150.jpg" class="attachment-thumbnail" alt="pic" width="10" height="10" /></li>

Instead, it is outputting:

<li><img width="150" height="150" src="http://..../wp-content/uploads/2011/01/pic-150x150.jpg" class="attachment-thumbnail" alt="pic" width="10" height="10" /></li>

Thanks very much for any help anyone can give. I have tried it with other attributes, like the style attribute, and the style tag appears as expected. I guess I could use the style tag to set the dimensions that way but I don’t understand why the width/height method isn’t working!

Related posts

1 comment

  1. As written in the documentation, there are no attributes width and height in the fourth parameter of the function. What you might want to do is this:

    wp_get_attachment_image(
        $id,
        array( 10, 10 )
    );
    

    An alternative and recommended way is to define an image size which will lead WordPress to generate a thumbnail for this size on upload.

    add_action( 'after_setup_theme', 'wpse_132171_create_image_size' );
    function wpse_132171_create_image_size() {
    
        add_theme_support( 'post-thumbnails' );
        add_image_size( 'my_size', 10, 10 ); 
    }
    

    With that, you can refer to that size by the slug my_size in wp_get_attachment_image():

    wp_get_attachment_image( $id, 'my_size' );
    

    For this solution you should rebuild your thumbnails if you have existing images using a plugin like »AJAX Thumbnail Rebuild«

    Note: When you use an array as 2nd argument, WordPress will use attachment-{$val1}x{$val2} (a string built from the array values) as class. This behavior breaks as soon as you use the 4th argument (array attributes) and add a custom class key there. The custom class will override what is delivered by core. This could be considered to be a bug.

Comments are closed.