diff --git a/src/wp-admin/edit-form-blocks.php b/src/wp-admin/edit-form-blocks.php index 2237fc69ce293..55fd4e88abc4b 100644 --- a/src/wp-admin/edit-form-blocks.php +++ b/src/wp-admin/edit-form-blocks.php @@ -98,6 +98,7 @@ static function ( $classes ) { 'jpeg_interlaced', 'png_interlaced', 'gif_interlaced', + 'client_side_supported_mime_types', 'name', 'site_icon', 'site_icon_url', diff --git a/src/wp-admin/site-editor.php b/src/wp-admin/site-editor.php index 9a8268c3392d7..657b3ce57495a 100644 --- a/src/wp-admin/site-editor.php +++ b/src/wp-admin/site-editor.php @@ -224,6 +224,7 @@ static function ( $classes ) { 'jpeg_interlaced', 'png_interlaced', 'gif_interlaced', + 'client_side_supported_mime_types', 'name', 'site_icon', 'site_icon_url', diff --git a/src/wp-includes/rest-api/class-wp-rest-server.php b/src/wp-includes/rest-api/class-wp-rest-server.php index 704a990298826..b1f80df89ebbe 100644 --- a/src/wp-includes/rest-api/class-wp-rest-server.php +++ b/src/wp-includes/rest-api/class-wp-rest-server.php @@ -1394,6 +1394,21 @@ public function get_index( $request ) { $available['png_interlaced'] = (bool) apply_filters( 'image_save_progressive', false, 'image/png' ); /** This filter is documented in wp-includes/class-wp-image-editor-gd.php */ $available['gif_interlaced'] = (bool) apply_filters( 'image_save_progressive', false, 'image/gif' ); + + /** + * Filters the MIME types supported by client-side media processing. + * + * Allows plugins to add or remove MIME types from the list of formats + * that can be processed client-side using WebAssembly-based vips. + * + * @since 7.0.0 + * + * @param string[] $mime_types Array of MIME type strings. + */ + $available['client_side_supported_mime_types'] = apply_filters( + 'client_side_supported_mime_types', + array( 'image/jpeg', 'image/png', 'image/gif', 'image/webp', 'image/avif' ) + ); } $response = new WP_REST_Response( $available ); diff --git a/tests/qunit/fixtures/wp-api-generated.js b/tests/qunit/fixtures/wp-api-generated.js index 4f925d35c82f6..4ec2877667eb2 100644 --- a/tests/qunit/fixtures/wp-api-generated.js +++ b/tests/qunit/fixtures/wp-api-generated.js @@ -12920,6 +12920,13 @@ mockedApiResponse.Schema = { "jpeg_interlaced": false, "png_interlaced": false, "gif_interlaced": false, + "client_side_supported_mime_types": [ + "image/jpeg", + "image/png", + "image/gif", + "image/webp", + "image/avif" + ], "site_logo": 0, "site_icon": 0, "site_icon_url": ""