mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-08-13 05:10:18 +00:00
Media: Generate WebP only for certain registered image sizes.
The existing filter `image_editor_output_format` receives an additional parameter `$size_name` which is populated whenever it controls the output format for a specific registered image size to create. Otherwise, it remains empty. In order to achieve this, a low level change has been added in bringing a new `$size_name` class property to the `WP_Image_Editor` base class, which is introduced in a backward compatible way that will not cause conflicts with custom implementations. This parameter is then used in new logic inside the `wp_default_image_output_mapping()` callback function for the filter, controlling whether `image/jpeg` should map to `image/webp` output or not. By default, this is enabled for all WordPress core image sizes by default, and this list can be modified using a new `wp_image_sizes_with_additional_mime_type_support` filter, e.g. to remove core sizes or add custom sizes. The customization per image size may be further enhanced by providing a more declarative API via a new parameter on the `add_image_size()` function. Props eugenemanuilov, flixos90, adamsilverstein, joegrainger. Fixes #56526. See #55443, #56288. git-svn-id: https://develop.svn.wordpress.org/trunk@54097 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -3912,9 +3912,39 @@ function _wp_image_editor_choose( $args = array() ) {
|
||||
* @since 6.1.0
|
||||
*
|
||||
* @param array $output_mapping Map of mime type to output format.
|
||||
* @retun array The adjusted default output mapping.
|
||||
* @param string $filename Path to the image.
|
||||
* @param string $mime_type The source image mime type.
|
||||
* @param string $size_name Optional. The image size name to create, or empty string if not set. Default empty string.
|
||||
* @return array The adjusted default output mapping.
|
||||
*/
|
||||
function wp_default_image_output_mapping( $output_mapping ) {
|
||||
function wp_default_image_output_mapping( $output_mapping, $filename, $mime_type, $size_name = '' ) {
|
||||
// If size name is specified, check whether the size supports additional MIME types like WebP.
|
||||
if ( $size_name ) {
|
||||
// Include only the core sizes that do not rely on add_image_size(). Additional image sizes are opt-in.
|
||||
$enabled_sizes = array(
|
||||
'thumbnail' => true,
|
||||
'medium' => true,
|
||||
'medium_large' => true,
|
||||
'large' => true,
|
||||
'post-thumbnail' => true,
|
||||
);
|
||||
|
||||
/**
|
||||
* Filters the sizes that support secondary mime type output. Developers can use this
|
||||
* to control the generation of additional mime type sub-sized images.
|
||||
*
|
||||
* @since 6.1.0
|
||||
*
|
||||
* @param array $enabled_sizes Map of size names and whether they support secondary mime type output.
|
||||
*/
|
||||
$enabled_sizes = apply_filters( 'wp_image_sizes_with_additional_mime_type_support', $enabled_sizes );
|
||||
|
||||
// Bail early if the size does not support additional MIME types.
|
||||
if ( empty( $enabled_sizes[ $size_name ] ) ) {
|
||||
return $output_mapping;
|
||||
}
|
||||
}
|
||||
|
||||
$output_mapping['image/jpeg'] = 'image/webp';
|
||||
return $output_mapping;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user