WordPress.org

Make WordPress Core

Opened 6 weeks ago

Last modified 10 days ago

#48003 new defect (bug)

Function wp_prepare_attachment_for_js() missing other sizes

Reported by: kkatusic Owned by:
Milestone: Awaiting Review Priority: normal
Severity: minor Version: 5.2.3
Component: Media Keywords: needs-patch
Focuses: Cc:
PR Number:

Description (last modified by SergeyBiryukov)

Function wp_prepare_attachment_for_js() missing custom defined sizes attributes of images in returned array. After last up to WordPress on version 5.2.3. it missed custom sizes.

I tried on three different websites and it is same, custom sizes have been missing.

Change History (8)

#1 @kkatusic
6 weeks ago

Sorry I copy-pasted wrong function it is: wp_prepare_attachment_for_js()

#2 @SergeyBiryukov
6 weeks ago

  • Description modified (diff)
  • Summary changed from Function get_intermediate_image_sizes() missing other sizes to Function wp_prepare_attachment_for_js() missing other sizes

#3 @iCaleb
13 days ago

Hmm, I'm struggling to replicate any differences with recent versions. Do you recall which version of WordPress you were on previously?

According to the the code, everything works correctly for me. For example, if I have the following in my theme:

add_filter( 'image_size_names_choose', 'custom_image_size_names_48003' );
function custom_image_size_names_48003( $sizes ) {
  return array_merge( $sizes, array(
    'my-custom-size' => __( 'My Custom Size' ),
  ) );
}

add_action( 'after_setup_theme', 'add_custom_image_sizes_48003' );
function add_custom_image_sizes_48003() {
  add_image_size( 'my-custom-size', 220, 180, true );
  add_image_size( 'some-other-size', 300 );
}

Then wp_prepare_attachment_for_js() for a newly uploaded image will return 'sizes' => array(4) { 'thumbnail', 'medium', 'vip-custom-size', 'full' }.

Note that only the custom image size that I gave a display name shows up. More info: https://developer.wordpress.org/reference/functions/add_image_size/#for-media-library-images-admin

Last edited 13 days ago by iCaleb (previous) (diff)

#4 @kkatusic
13 days ago

I created test page, you can check it here: http://bit.ly/2LPa522 . You can see it printed only main data sizes that WP provided, but I have here some custom image sizes, to be precise I have 11 custom sizes.

Only difference between my code and your is that I don't use hook

image_size_names_choose

#5 @iCaleb
12 days ago

Only difference between my code and your is that I don't use hook image_size_names_choose

Right, that is the key here. Without "registering" the custom image size with a display name, it won't be shown on the attachment page in the dropdown, thus wp_prepare_attachment_for_js() doesn't need the data.

You are sure this behavior was previously different? And if so, what version of WP were you on before you updated?

#6 @kkatusic
12 days ago

I don't remember, before last update of WP it's been worked without any disadvantages.

If you think that code is working like it should be, you can close ticket.

#7 @iCaleb
10 days ago

I'll wait for a second opinion to close this, just to make sure I'm not missing something.

To resolve your particular problem though, I'd recommend either using the image_size_names_choose filter to register the custom image sizes you need this function to return. Or modify $response['sizes'] in the output with the wp_prepare_attachment_for_js filter: https://github.com/WordPress/WordPress/blob/ecf00fc84407249ae2a699e3b3d31571194efa34/wp-includes/media.php#L3585

#8 @kkatusic
10 days ago

Ok, thx.

Note: See TracTickets for help on using tickets.