WordPress/wp-admin/includes
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
..
admin-filters.php Bootstrap/Load: Move some more administration-related hooks to `admin-filters.php`. 2022-04-28 16:39:11 +00:00
admin.php Code Modernization: Replace `dirname( __FILE__ )` calls with `__DIR__` magic constant. 2020-02-06 06:33:11 +00:00
ajax-actions.php Coding Standards: Adjust the logic slightly in `wp_ajax_replyto_comment()`. 2022-07-21 10:59:10 +00:00
bookmark.php Docs: Add missing description for `$pagenow` global in various functions. 2022-04-04 18:26:06 +00:00
class-automatic-upgrader-skin.php Code Modernization: Fix reserved keyword and parameter name mismatches for parent/child classes in `WP_Upgrader_Skin::feedback()`. 2021-09-09 13:48:56 +00:00
class-bulk-plugin-upgrader-skin.php Text Changes: Unify various "Back to..." vs. "Return to..." vs. "Go to..." strings. 2020-11-09 10:53:10 +00:00
class-bulk-theme-upgrader-skin.php Text Changes: Unify various "Back to..." vs. "Return to..." vs. "Go to..." strings. 2020-11-09 10:53:10 +00:00
class-bulk-upgrader-skin.php Code Modernization: Fix parameter name mismatches for parent/child classes in `WP_Upgrader_Skin::error()`. 2021-09-09 13:59:56 +00:00
class-core-upgrader.php Administration: Replace "can not" with "cannot" after [53131]. 2022-04-11 11:50:01 +00:00
class-custom-background.php Coding Standards: Escape the home URL in the "Background updated. Visit your site" message. 2022-07-04 10:14:14 +00:00
class-custom-image-header.php Coding Standards: Escape the home URL in the "Header updated. Visit your site" message. 2022-07-04 10:11:12 +00:00
class-file-upload-upgrader.php Coding Standards: Rename the `$object` variable to `$attachment` in several files. 2022-04-14 15:15:12 +00:00
class-ftp-pure.php Docs: Update URLs in some `@link` tags and switch them to HTTPS. 2019-11-01 14:57:02 +00:00
class-ftp-sockets.php Administration: Replace contracted verb forms for better consistency. 2022-03-22 16:25:03 +00:00
class-ftp.php Code Modernization: Rename parameters that use reserved keywords in `wp-admin/includes/class-ftp.php`. 2022-03-26 15:28:08 +00:00
class-language-pack-upgrader-skin.php Code Modernization: Fix parameter name mismatches for parent/child classes in `WP_Upgrader_Skin::error()`. 2021-09-09 13:59:56 +00:00
class-language-pack-upgrader.php Administration: Remove self-reference ("we") in WordPress Admin. 2022-04-11 11:42:04 +00:00
class-pclzip.php Filesystem API: Make sure to only call `fread()` on non-empty files in `PclZip::privAddFile()`. 2021-08-29 01:33:58 +00:00
class-plugin-installer-skin.php Code Modernization: Replace `phpversion()` function calls with `PHP_VERSION` constant. 2022-05-20 17:38:14 +00:00
class-plugin-upgrader-skin.php Text Changes: Unify various "Back to..." vs. "Return to..." vs. "Go to..." strings. 2020-11-09 10:53:10 +00:00
class-plugin-upgrader.php Code Modernization: Replace `phpversion()` function calls with `PHP_VERSION` constant. 2022-05-20 17:38:14 +00:00
class-theme-installer-skin.php Code Modernization: Replace `phpversion()` function calls with `PHP_VERSION` constant. 2022-05-20 17:38:14 +00:00
class-theme-upgrader-skin.php Text Changes: Unify various "Back to..." vs. "Return to..." vs. "Go to..." strings. 2020-11-09 10:53:10 +00:00
class-theme-upgrader.php Code Modernization: Replace `phpversion()` function calls with `PHP_VERSION` constant. 2022-05-20 17:38:14 +00:00
class-walker-category-checklist.php Code Modernization: Fix reserved keyword and parameter name mismatches for parent/child classes in `Walker::end_el()`. 2021-09-09 13:03:55 +00:00
class-walker-nav-menu-checklist.php Code Modernization: Fix last parameter name mismatches for parent/child classes in `Walker::start_el()`. 2021-09-09 12:39:59 +00:00
class-walker-nav-menu-edit.php Menus: Use more appropriate escaping functions in class `Walker_Nav_Menu_Edit`. 2022-07-05 08:06:17 +00:00
class-wp-ajax-upgrader-skin.php Code Modernization: Fix reserved keyword and parameter name mismatches for parent/child classes in `WP_Upgrader_Skin::feedback()`. 2021-09-09 13:48:56 +00:00
class-wp-application-passwords-list-table.php Application Passwords: Allow enter key to submit profile form. 2021-06-07 23:49:58 +00:00
class-wp-automatic-updater.php Code Modernization: Replace `phpversion()` function calls with `PHP_VERSION` constant. 2022-05-20 17:38:14 +00:00
class-wp-comments-list-table.php Docs: Use third-person singular verbs for function descriptions in `WP_Comments_List_Table` class, as per docblock standards. 2022-07-04 08:20:15 +00:00
class-wp-community-events.php Administration: Properly handle HTML entities in the News & Events dashboard widget. 2022-01-20 09:19:07 +00:00
class-wp-debug-data.php Code Modernization: Replace `phpversion()` function calls with `PHP_VERSION` constant. 2022-05-20 17:38:14 +00:00
class-wp-filesystem-base.php Code Modernization: Rename parameters that use reserved keywords in `wp-admin/includes/class-wp-filesystem-base.php`. 2022-03-29 13:21:08 +00:00
class-wp-filesystem-direct.php Docs: Various inline documentation corrections and improvements. 2021-12-07 12:20:02 +00:00
class-wp-filesystem-ftpext.php Coding Standards: Use `MINUTE_IN_SECONDS` where appropriate. 2022-07-17 02:18:09 +00:00
class-wp-filesystem-ftpsockets.php Docs: Various inline documentation corrections and improvements. 2021-12-07 12:20:02 +00:00
class-wp-filesystem-ssh2.php Filesystem API: Include the `ssh-ed25519` public key signature algorithm as an alternative to `ssh-rsa`. 2022-02-27 15:02:04 +00:00
class-wp-importer.php Code Modernization: Rename parameters that use reserved keywords in `wp-admin/includes/class-wp-importer.php`. 2022-03-30 10:45:06 +00:00
class-wp-internal-pointers.php External Libraries: Further fix jQuery deprecations in WordPress core. 2021-11-30 17:18:01 +00:00
class-wp-links-list-table.php Code Modernization: Fix parameter name mismatches for parent/child classes in `WP_List_Table::handle_row_actions()`. 2021-09-07 19:24:53 +00:00
class-wp-list-table-compat.php Docs: Add missing descriptions for `_WP_List_Table_Compat` methods. 2020-11-14 16:54:08 +00:00
class-wp-list-table.php Docs: Add a missing word in `pre_months_dropdown_query` filter description. 2022-06-14 15:07:10 +00:00
class-wp-media-list-table.php Accessibility: List Tables: Hide the Comments column icon and `title` attribute from screen readers. 2022-05-19 15:54:15 +00:00
class-wp-ms-sites-list-table.php Docs: Various inline documentation corrections and improvements. 2021-12-07 12:20:02 +00:00
class-wp-ms-themes-list-table.php Accessibility: Administration: Improve `aria-label` on network admin Themes screen. 2021-09-10 14:49:00 +00:00
class-wp-ms-users-list-table.php I18N: Use a translatable string for displaying a user's first name and last name. 2022-06-14 14:43:12 +00:00
class-wp-plugin-install-list-table.php Docs: Improve `plugin_install_action_links` filter's docs. 2022-05-02 13:07:14 +00:00
class-wp-plugins-list-table.php Administration: Replace contracted verb forms for better consistency. 2022-03-22 19:59:04 +00:00
class-wp-post-comments-list-table.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
class-wp-posts-list-table.php Accessibility: List Tables: Hide the Comments column icon and `title` attribute from screen readers. 2022-05-19 15:54:15 +00:00
class-wp-privacy-data-export-requests-list-table.php Privacy: Fix "Retry" action after a personal data export failure. 2022-03-10 19:22:01 +00:00
class-wp-privacy-data-removal-requests-list-table.php Coding Standards: Fix WPCS issues in [49258]. 2020-10-20 21:20:07 +00:00
class-wp-privacy-policy-content.php Administration: Remove self-reference ("we") in WordPress Admin. 2022-04-11 11:42:04 +00:00
class-wp-privacy-requests-table.php Docs: Document the globals used in some Privacy API methods. 2021-11-24 11:41:03 +00:00
class-wp-screen.php Docs: Use third-person singular verbs for function descriptions in the `WP_Screen` API. 2022-06-16 23:10:10 +00:00
class-wp-site-health-auto-updates.php Administration: Replace contracted verb forms for better consistency. 2022-03-22 16:25:03 +00:00
class-wp-site-health.php Site Health: Remove unused variables in `WP_Site_Health::get_test_plugin_version()`. 2022-05-05 16:29:08 +00:00
class-wp-site-icon.php Code Modernization: Rename parameters that use reserved keywords in `wp-admin/includes/class-wp-site-icon.php`. 2022-04-11 14:21:09 +00:00
class-wp-terms-list-table.php Code Modernization: Rename parameters that use reserved keywords in `wp-admin/includes/class-wp-terms-list-table.php`. 2022-04-13 16:14:10 +00:00
class-wp-theme-install-list-table.php Themes: Add version to theme screenshot URL for better browser cache handling. 2022-03-17 22:21:07 +00:00
class-wp-themes-list-table.php Themes: Add version to theme screenshot URL in `WP_Themes_List_Table`. 2022-03-18 12:44:04 +00:00
class-wp-upgrader-skin.php Code Modernization: Fix parameter name mismatches for parent/child classes in `WP_Upgrader_Skin::error()`. 2021-09-09 13:59:56 +00:00
class-wp-upgrader-skins.php Docs: Add missing `@deprecated` tags in the file docblock of some deprecated files. 2019-10-08 17:19:04 +00:00
class-wp-upgrader.php Upgrade/Install: Add a conditional to facilitate testing of the Rollbacks feature project. 2022-06-26 12:37:18 +00:00
class-wp-users-list-table.php I18N: Use a translatable string for displaying a user's first name and last name. 2022-06-14 14:43:12 +00:00
comment.php Docs: Use third-person singular verbs for function descriptions in `wp-admin/includes/comment.php`, as per docblocks standards. 2022-07-20 22:15:10 +00:00
continents-cities.php I18N: Update list of continents and cities for the timezone selection. 2021-03-19 15:42:04 +00:00
credits.php Help/About: Don't output empty `<span>` tags on Credits screen. 2021-10-19 23:09:00 +00:00
dashboard.php Administration: Update design of the Dashboard welcome panel. 2022-05-10 16:45:08 +00:00
deprecated.php Media: Remove `attachment_fields_to_save` filter and deprecate `image_attachment_fields_to_save()`. 2022-04-20 08:13:10 +00:00
edit-tag-messages.php Docs: Various inline documentation corrections and improvements. 2021-12-07 12:20:02 +00:00
export.php General: Replace all `esc_url_raw()` calls in core with `sanitize_url()`. 2022-06-01 18:14:10 +00:00
file.php Coding Standards: Use `MINUTE_IN_SECONDS` where appropriate. 2022-07-17 02:18:09 +00:00
image-edit.php Docs: Correct the return type for `wp_save_image_file()`. 2022-06-21 11:16:17 +00:00
image.php 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
import.php Coding Standards: Rename the `$object` variable to `$attachment` in several files. 2022-04-14 15:15:12 +00:00
list-table.php Code Modernization: Rename parameters that use reserved keywords in `wp-admin/includes/list-table.php`. 2022-04-15 10:52:11 +00:00
media.php Media: Use correct escaping function for URLs in some legacy media functions. 2022-06-24 13:52:13 +00:00
menu.php Coding Standards: Correct the `$items_count` variable in `add_menu_classes()`. 2022-04-17 14:44:07 +00:00
meta-boxes.php Docs: Use third-person singular verbs for function descriptions in `wp-admin/includes/meta-boxes.php`, per the documentation standards. 2022-04-17 17:57:09 +00:00
misc.php Editor: Include user's name in the `wp_refresh_post_lock()` response. 2022-07-11 18:18:13 +00:00
ms-admin-filters.php Docs: Improve comments in some `wp-admin` files per the documentation standards. 2020-01-29 00:35:08 +00:00
ms-deprecated.php I18N: Capitalize translator comments consistently, add trailing punctuation. 2019-09-03 00:41:05 +00:00
ms.php Code Modernization: Rename parameters that use reserved keywords in `wp-admin/includes/ms.php`. 2022-04-18 10:33:09 +00:00
nav-menu.php Menus: Use correct parameter in `_wp_nav_menu_meta_box_object()`. 2022-04-19 15:59:10 +00:00
network.php Administration: Add labels to read-only form fields. 2022-07-21 09:04:14 +00:00
noop.php Code Modernization: Remove conditional use of PHP `realpath()`. 2019-09-20 20:46:56 +00:00
options.php External Libraries: Further fix jQuery deprecations in WordPress core. 2021-11-30 17:18:01 +00:00
plugin-install.php Plugins: Move the introduction text from `install_dashboard()` to `display_plugins_table()`. 2022-03-15 15:58:02 +00:00
plugin.php Code Modernization: Use the integer portion of an item position in `add_submenu_page()`. 2022-06-22 14:55:11 +00:00
post.php Posts, Post Types: Standardize on `$post` parameter name where appropriate. 2022-07-18 17:37:17 +00:00
privacy-tools.php General: Replace all `esc_url_raw()` calls in core with `sanitize_url()`. 2022-06-01 18:14:10 +00:00
revision.php Docs: Various inline documentation corrections and improvements. 2021-12-07 12:20:02 +00:00
schema.php Networks and Sites: Remove duplicate cache entry. 2022-04-06 04:35:00 +00:00
screen.php Coding Standards: Use strict comparison in `wp-admin/includes/screen.php`. 2021-05-09 20:27:02 +00:00
taxonomy.php Docs: Use third-person singular verbs for function descriptions in the Taxonomy Administration API. 2022-06-16 23:39:08 +00:00
template.php Docs: Add missing function description in `wp-admin/includes/template.php`. 2022-07-21 09:24:10 +00:00
theme-install.php Docs: Add missing docblock description for `install_themes_upload()`. 2022-07-04 08:00:15 +00:00
theme.php General: Replace all `esc_url_raw()` calls in core with `sanitize_url()`. 2022-06-01 18:14:10 +00:00
translation-install.php Docs: Fix incorrect type in `translations_api` and `translations_api_result` docblocks. 2022-01-27 21:15:03 +00:00
update-core.php Upgrade/Install: Update `$_old_files` for 6.0. 2022-05-23 17:02:16 +00:00
update.php Docs: Improve description for `wp_plugin_update_rows()` and `wp_theme_update_rows()`. 2022-07-09 12:59:11 +00:00
upgrade.php Code Modernization: Rename parameters that use reserved keywords in `wp-admin/includes/upgrade.php`. 2022-04-20 10:46:09 +00:00
user.php Text Changes: Improve consistency of admin error notices. 2022-06-02 15:05:13 +00:00
widgets.php Docs: Capitalize "ID", when referring to a widget ID or sidebar ID, in a more consistent way. 2021-12-13 10:21:07 +00:00