WordPress/wp-admin
Adam Silverstein 71ca314193 Media: enable generating multiple mime types for image uploads; specifically WebP versions for JPEG images by default.
This changeset adds the capability for core media uploads to generate sub sized images in more than a single mime type. The output formats for each mime type can be controlled through a filter. WebP is used as an additional output format for JPEG images by default to improve front end performance.

When generating additional mime types, only images which are smaller than the respective original are retained. By default, additional mime type images are only generated for the built-in core image sizes and any custom sizes that have opted in.

Image meta is updated with a new 'sources' array containing file details for each mime type. Each image size in the 'sizes' array also gets a new 'sources' array that contains the image file details for each mime type.

This change also increases image upload retries to accommodate additional image sizes. It also adds a `$mime_type` parameter to the `wp_get_missing_image_subsizes` function and filter.

This change adds three new filters to enable full control of secondary mime image generation and output:

* A new filter `wp_image_sizes_with_additional_mime_type_support` that filters the sizes that support secondary mime type output. Developers can use this to control the output of additional mime type sub-sized images on a per size basis.
* A new filter `wp_upload_image_mime_transforms` that filters the output mime types for a given input mime type. Developers can use this to control generation of additional mime types for a given input mime type or even override the original mime type.
* A new filter `wp_content_image_mimes` which controls image mime type output selection and order for frontend content. Developers can use this to control the mime type output preference order for content images. Content images inserted from the media library will use the available image versions based on the order from this filter.

Thanks to the many contributors who helped develop, test and give feedback on this feature.

A haiku to summarize:

Upload a JPEG
Images of all sizes
Output as WebPs

Props flixos90, MatthiasReinholz, studiolxv, markhowellsmead, eatingrules, pbiron, mukesh27, joegrainger, mehulkaklotar, tweetythierry, akshitsethi, peterwilsoncc, eugenemanuilov, mitogh, shetheliving, clarkeemily, codekraft, mikeschroder, clorith, kasparsd, spacedmonkey, trevorpfromsandee, jb510, scofennellgmailcom, seedsca, cagsmith, karinclimber, dainemawer, baxbridge, grapplerulrich, sobatkras, chynnabenton, tonylocalword, barneydavey, kwillmorth, garymatthews919, olliejones, imarkinteractive, jeffpaul, feastdesignco, webbeetle, masteradhoc.

See #55443.


Built from https://develop.svn.wordpress.org/trunk@53751


git-svn-id: http://core.svn.wordpress.org/trunk@53310 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-21 18:03:13 +00:00
..
css Administration: Add labels to read-only form fields. 2022-07-21 09:04:14 +00:00
images Administration: Update design of the Dashboard welcome panel. 2022-05-10 16:45:08 +00:00
includes Media: enable generating multiple mime types for image uploads; specifically WebP versions for JPEG images by default. 2022-07-21 18:03:13 +00:00
js Quick/Bulk Edit: Remove duplicate HTML IDs. 2022-05-05 03:26:16 +00:00
maint Database: Check the correct value for displaying the "Successfully repaired table" or "Failed to repair" messages on Database Repair screen. 2020-12-04 15:50:12 +00:00
network General: Replace all `esc_url_raw()` calls in core with `sanitize_url()`. 2022-06-01 18:14:10 +00:00
user Code Modernization: Replace `dirname( __FILE__ )` calls with `__DIR__` magic constant. 2020-02-06 06:33:11 +00:00
about.php Help/About: Add cache busting string to video thumbnail. 2022-05-25 02:19:17 +00:00
admin-ajax.php Coding Standards: Remove extra space in `wp-admin/admin-ajax.php`. 2022-05-07 16:21:18 +00:00
admin-footer.php Coding Standards: Simplify a condition in `wp-admin/admin-footer.php`. 2021-06-01 11:30:57 +00:00
admin-functions.php Code Modernization: Replace `dirname( __FILE__ )` calls with `__DIR__` magic constant. 2020-02-06 06:33:11 +00:00
admin-header.php Docs: Add missing description for `$typenow` global in various functions. 2022-04-04 18:39:01 +00:00
admin-post.php Administration: Require a valid action parameter to be set for `admin-ajax.php` requests. 2022-03-02 15:00:11 +00:00
admin.php Docs: Add missing description for `$taxnow` global in various functions. 2022-04-04 18:43:02 +00:00
async-upload.php Media: Remove target blank attribute from media uploader edit links. 2022-01-27 22:17:00 +00:00
authorize-application.php I18N: Add missing translator comment for application password helper text for Super Admins. 2022-04-08 00:03:05 +00:00
comment.php Administration: Replace contracted verb forms for better consistency. 2022-03-22 16:25:03 +00:00
credits.php Help/About: WordPress 5.9 About Page. 2022-01-04 18:35:03 +00:00
custom-background.php Code Modernization: Replace `dirname( __FILE__ )` calls with `__DIR__` magic constant. 2020-02-06 06:33:11 +00:00
custom-header.php Code Modernization: Replace `dirname( __FILE__ )` calls with `__DIR__` magic constant. 2020-02-06 06:33:11 +00:00
customize.php Customizer: When a block theme is active, add an information about Site Editor in the Customizer. 2022-03-29 19:10:14 +00:00
edit-comments.php Docs: Explicitly declare some globals for clarity. 2022-05-29 15:35:11 +00:00
edit-form-advanced.php Administration: Remove self-reference ("we") in WordPress Admin. 2022-04-11 11:42:04 +00:00
edit-form-blocks.php Editor: Return additional block patterns to server-generated settings 2022-05-17 14:38:14 +00:00
edit-form-comment.php Docs: Explicitly declare some globals for clarity. 2022-05-29 15:35:11 +00:00
edit-link-form.php Administration: Replace contracted verb forms for better consistency. 2022-03-22 16:25:03 +00:00
edit-tag-form.php General: Replace all `esc_url_raw()` calls in core with `sanitize_url()`. 2022-06-01 18:14:10 +00:00
edit-tags.php General: Replace all `esc_url_raw()` calls in core with `sanitize_url()`. 2022-06-01 18:14:10 +00:00
edit.php Docs: Explicitly declare some globals for clarity. 2022-05-29 15:35:11 +00:00
erase-personal-data.php Help/about: Improve text in help tabs of the Personal Data Exporter/Eraser. 2022-04-14 14:46:07 +00:00
export-personal-data.php Help/about: Improve text in help tabs of the Personal Data Exporter/Eraser. 2022-04-14 14:46:07 +00:00
export.php Administration: Remove self-reference ("we") in WordPress Admin. 2022-04-11 11:42:04 +00:00
freedoms.php Administration: Remove self-reference ("we") in WordPress Admin. 2022-04-11 11:42:04 +00:00
import.php Docs: Add a comment about the `$title` global usage in various admin files. 2021-07-22 13:53:00 +00:00
index.php Help/About: Improve typography in the `Welcome to your WordPress Dashboard!` text. 2021-11-03 03:16:57 +00:00
install-helper.php Code Modernization: Rename parameters that use reserved keywords in `wp-admin/install-helper.php`. 2022-04-20 11:19:12 +00:00
install.php Coding Standards: Move `wp-includes/wp-db.php` to `wp-includes/class-wpdb.php`. 2022-07-21 16:00:15 +00:00
link-add.php Docs: Add a comment about the `$title` global usage in various admin files. 2021-07-22 13:53:00 +00:00
link-manager.php Docs: Add a comment about the `$title` global usage in various admin files. 2021-07-22 13:53:00 +00:00
link-parse-opml.php XML-RPC: Explicitly unset the reference to the parser resource after calling `xml_parser_free()` to avoid memory leaks in PHP 7.0.0 or higher. 2020-07-05 15:22:01 +00:00
link.php Coding Standards: Apply some alignment fixes from `composer format`. 2021-07-27 19:01:59 +00:00
load-scripts.php Docs: Update a comment in `wp-admin/load-styles.php` per the documentation standards. 2021-12-12 14:52:02 +00:00
load-styles.php Docs: Update a comment in `wp-admin/load-styles.php` per the documentation standards. 2021-12-12 14:52:02 +00:00
media-new.php Docs: Add a comment about the `$title` global usage in various admin files. 2021-07-22 13:53:00 +00:00
media-upload.php Docs: Add examples of possible names for various hooks whose name contains a dynamic portion. 2021-03-07 12:32:09 +00:00
media.php Administration: Replace contracted verb forms for better consistency. 2022-03-22 16:25:03 +00:00
menu-header.php Administration: Restore the correct escaping function for base64-encoded SVG icons in the admin menu. 2022-04-07 12:54:03 +00:00
menu.php Administration: Make sure the `$customize_url` variable is always defined in the admin menu. 2021-12-25 03:32:03 +00:00
moderation.php Code Modernization: Replace `dirname( __FILE__ )` calls with `__DIR__` magic constant. 2020-02-06 06:33:11 +00:00
ms-admin.php Code Modernization: Replace `dirname( __FILE__ )` calls with `__DIR__` magic constant. 2020-02-06 06:33:11 +00:00
ms-delete-site.php Docs: Add a comment about the `$title` global usage in various admin files. 2021-07-22 13:53:00 +00:00
ms-edit.php Code Modernization: Replace `dirname( __FILE__ )` calls with `__DIR__` magic constant. 2020-02-06 06:33:11 +00:00
ms-options.php Code Modernization: Replace `dirname( __FILE__ )` calls with `__DIR__` magic constant. 2020-02-06 06:33:11 +00:00
ms-sites.php Code Modernization: Replace `dirname( __FILE__ )` calls with `__DIR__` magic constant. 2020-02-06 06:33:11 +00:00
ms-themes.php Code Modernization: Replace `dirname( __FILE__ )` calls with `__DIR__` magic constant. 2020-02-06 06:33:11 +00:00
ms-upgrade-network.php Code Modernization: Replace `dirname( __FILE__ )` calls with `__DIR__` magic constant. 2020-02-06 06:33:11 +00:00
ms-users.php Code Modernization: Replace `dirname( __FILE__ )` calls with `__DIR__` magic constant. 2020-02-06 06:33:11 +00:00
my-sites.php Docs: Add a comment about the `$title` global usage in various admin files. 2021-07-22 13:53:00 +00:00
nav-menus.php Text Changes: Improve consistency of punctuation in some strings. 2022-07-14 14:10:11 +00:00
network.php Docs: Add a comment about the `$title` global usage in various admin files. 2021-07-22 13:53:00 +00:00
options-discussion.php Options, Meta APIs: Rephrase the description of the "Avatars" section. 2022-03-28 10:56:04 +00:00
options-general.php Text Changes: Fix various inconsistent capitalization issues. 2022-04-15 11:58:10 +00:00
options-head.php Administration: Replace legacy `updated` message type in `add_settings_error()` calls with `success`. 2019-08-16 00:39:55 +00:00
options-media.php Docs: Add a comment about the `$title` global usage in various admin files. 2021-07-22 13:53:00 +00:00
options-permalink.php Coding Standards: Use `MINUTE_IN_SECONDS` where appropriate. 2022-07-17 02:18:09 +00:00
options-privacy.php Administration: Clarify some sentences after [53131]. 2022-04-12 13:43:16 +00:00
options-reading.php Coding Standards: Use strict comparison in `wp-admin/options-reading.php`. 2022-01-02 16:47:05 +00:00
options-writing.php Docs: Add a comment about the `$title` global usage in various admin files. 2021-07-22 13:53:00 +00:00
options.php Coding Standards: Use `MINUTE_IN_SECONDS` where appropriate. 2022-07-17 02:18:09 +00:00
plugin-editor.php Text Changes: Fix various inconsistent capitalization issues. 2022-04-15 11:58:10 +00:00
plugin-install.php Administration: Replace contracted verb forms for better consistency. 2022-03-22 16:25:03 +00:00
plugins.php Administration: Replace contracted verb forms for better consistency. 2022-03-22 16:25:03 +00:00
post-new.php Coding Standards: Use strict comparison where static strings are involved. 2020-05-16 18:42:12 +00:00
post.php Administration: Replace contracted verb forms for better consistency. 2022-03-22 16:25:03 +00:00
press-this.php Code Modernization: Replace `dirname( __FILE__ )` calls with `__DIR__` magic constant. 2020-02-06 06:33:11 +00:00
privacy-policy-guide.php Administration: Remove self-reference ("we") in WordPress Admin. 2022-04-11 11:42:04 +00:00
privacy.php Docs: Add a comment about the `$title` global usage in various admin files. 2021-07-22 13:53:00 +00:00
profile.php Code Modernization: Replace `dirname( __FILE__ )` calls with `__DIR__` magic constant. 2020-02-06 06:33:11 +00:00
revision.php Coding Standards: Use strict comparison in `wp-admin/revision.php`. 2022-01-07 16:47:00 +00:00
setup-config.php Administration: Add labels to read-only form fields. 2022-07-21 09:04:14 +00:00
site-editor.php Coding Standards: Correct alignment in various files. 2022-05-23 20:40:14 +00:00
site-health-info.php Site Health: Internationalizes count in the info section headings. 2021-11-01 22:36:59 +00:00
site-health.php Site Health: Typo correction in Site Health help tab. 2021-12-18 21:02:04 +00:00
term.php General: Replace all `esc_url_raw()` calls in core with `sanitize_url()`. 2022-06-01 18:14:10 +00:00
theme-editor.php Text Changes: Fix various inconsistent capitalization issues. 2022-04-15 11:58:10 +00:00
theme-install.php Themes: Use consistent thumbnail sizes in Customizer preview screen. 2022-04-16 06:15:09 +00:00
themes.php Themes: Properly escape `home_url()` when changing and updating themes. 2022-07-06 19:46:10 +00:00
tools.php Docs: Add a comment about the `$title` global usage in various admin files. 2021-07-22 13:53:00 +00:00
update-core.php Text Changes: Improve consistency of punctuation in some strings. 2022-07-14 14:10:11 +00:00
update.php Docs: Add a comment about the `$title` global usage in various admin files. 2021-07-22 13:53:00 +00:00
upgrade-functions.php Code Modernization: Replace `dirname( __FILE__ )` calls with `__DIR__` magic constant. 2020-02-06 06:33:11 +00:00
upgrade.php General: Replace all `esc_url_raw()` calls in core with `sanitize_url()`. 2022-06-01 18:14:10 +00:00
upload.php Help/About: Typo correction in the Media Library help tab text. 2022-06-29 13:39:14 +00:00
user-edit.php General: Replace all `esc_url_raw()` calls in core with `sanitize_url()`. 2022-06-01 18:14:10 +00:00
user-new.php Users: Use autocomplete values on user profiles. 2022-04-08 17:40:07 +00:00
users.php Help/About: Add help tab info for the "Send password reset" row action on Users screen. 2022-07-05 00:25:13 +00:00
widgets-form-blocks.php Editor: Update preload paths for post, site and widgets editors 2022-04-07 13:40:04 +00:00
widgets-form.php Widgets: Revert [51705]. 2021-09-09 21:40:57 +00:00
widgets.php Administration: Replace contracted verb forms for better consistency. 2022-03-22 19:59:04 +00:00