Make WordPress Core

Opened 11 months ago

Last modified 10 months ago

#58304 new defect (bug)

wp_update_image_sizes

Reported by: logotronic's profile logotronic Owned by:
Milestone: Awaiting Review Priority: normal
Severity: blocker Version: 6.2
Component: Media Keywords: has-patch
Focuses: Cc:

Description

This blocker issue is actually introduced with WP 5.3 and still remains unsolved up to 6.2

Introduction:
Function wp_update_image_sizes calls function _wp_make_subsizes() in two ways/paths, either via function wp_create_image_subsizes() or directly.

Issue:
When function wp_update_image_sizes calls _wp_make_subsizes() via wp_create_image_subsizes(), filter intermediate_image_sizes_advanced', is invoked before calling _wp_make_subsizes().

When wp_update_image_sizes calls _wp_make_subsizes() directly, filter intermediate_image_sizes_advanced' is not available at all.

Problem:
When filter 'intermediate_image_sizes_advanced' is not available, there is no way to filter $new_sizes argument before _wp_make_subsizes() for the purpose described in function _wp_make_subsizes(), (see below):

/*
 * Only checks "size name" so we don't override existing images even if the dimensions
 * don't match the currently defined size with the same name.
 * To change the behavior, unset changed/mismatched sizes in the `sizes` array in image meta.
 */

Proposed solution:
1) Modify filter 'intermediate_image_sizes_advanced' by adding new argument $context argument in same way like filter 'wp_generate_attachment_metadata' added $context argument since WP 5.3.
2) In function wp_update_image_subsizes, before calling function _wp_make_subsizes(), add apply_filters 'intermediate_image_sizes_advanced' with additional argument $context and value 'update'.
3) In function wp_create_image_subsizes, in $new_sizes = apply_filters( 'intermediate_image_sizes_advanced', $new_sizes, $image_meta, $attachment_id ) add new $context argument value 'create'.

OR in function wp_update_image_subsizes before calling function _wp_make_subsizes() just add apply_filters 'intermediate_image_sizes_advanced'

OR just make some filter that available in both cases. Maybe inside function _wp_make_subsizes() at the beginning ??

Thanks

Change History (1)

This ticket was mentioned in PR #4758 on WordPress/wordpress-develop by nirav7707.


10 months ago
#1

  • Keywords has-patch added; needs-patch removed

Ticket - https://core.trac.wordpress.org/ticket/58304

A pull request (PR) use to relocate the intermediate_image_sizes_advanced filter from the wp_create_image_subsizes function to the _wp_make_subsizes function. This change was made because the wp_update_image_subsizes function directly and indirectly invokes the _wp_make_subsizes function. When _wp_make_subsizes is called indirectly through wp_create_image_subsizes, the filter is available. However, when _wp_make_subsizes is directly called, the filter is not available. By moving the filter to _wp_make_subsizes, it ensures consistent availability of the filter regardless of how _wp_make_subsizes is invoked.

Note: See TracTickets for help on using tickets.