Why is wp_get_attachment_image_src returning wrong dimensions?

I am using wp_get_attachment_image_src to construct the srcset attribute of an img tag. In that attribute I want to output a comma separated list of image urls along with the image widths.

Using the Media Settings page, I have configured the image sizes to be as follows:

  • Thumbnail size: 150×150
  • Medium size: 640×480
  • Large size: 1024×768
  • Small size: 278×320

The wp_get_attachment_image_src function returns the correct urls and the correct widths for the image sizes full, medium and small. small is a custom size I added using add_image_size.

If I call wp_get_attachment_image_src( $image_id, 'large' ), the returned array looks like this:

array (
    0 => 'http://localhost/wp-content/uploads/2014/10/image-1024x768.jpg',
    1 => 640,
    2 => 480,
    3 => true,
)

Checking the image which can be found at that url turns up the image with the correct dimensions.

Currently i am using the php builtin function getimagesize to circumvent this problem, but this function call takes significantly longer than simply accessing the index returned by wp_get_attachment_image_src:

Without getimagesize (mtime before and after execution):

  • ‘0.83761000 1415195440’
  • ‘0.83831600 1415195440’

With getimagesize:

  • ‘0.34808000 1415195635’
  • ‘0.35323900 1415195635’

What can I do to make wp_get_attachment_image_src return the correct dimensions?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

I found the same issue here
and the solution from there works.

The solution is as simple as pasting this:

$content_width = 2000;// Value higher than your new 'large' width

in functions.php

Explanation copied from there(user Chip Bennett):

I believe your issue is that the value set for the global $content_width variable (which is 640px in Boilerplate and 584px in Twenty Eleven) is less than the width you’re specifying via Settings -> Media.

WordPress is overriding your user setting with the Theme-specific value. This actually makes sense, since a Theme knows its maximum content width, and using a larger image width than what the Theme is designed to accommodate would very likely break the Theme layout.

Check the link above to refer to his full answer.


This is a link to the underscores theme project, where they set this value.


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

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x