diff --git a/src/js/_enqueues/vendor/plupload/handlers.js b/src/js/_enqueues/vendor/plupload/handlers.js index 7958e7231d..2560495b76 100644 --- a/src/js/_enqueues/vendor/plupload/handlers.js +++ b/src/js/_enqueues/vendor/plupload/handlers.js @@ -604,7 +604,12 @@ jQuery( document ).ready( function( $ ) { plupload.each( files, function( file ) { if ( file.type === 'image/heic' && up.settings.heic_upload_error ) { // Show error but do not block uploading. - wpQueueError( pluploadL10n.unsupported_image ) + wpQueueError( pluploadL10n.unsupported_image ); + } else if ( file.type === 'image/webp' && up.settings.webp_upload_error ) { + // Disallow uploading of WebP images if the server cannot edit them. + wpQueueError( pluploadL10n.noneditable_image ); + up.removeFile( file ); + return; } fileQueued( file ); diff --git a/src/js/_enqueues/vendor/plupload/wp-plupload.js b/src/js/_enqueues/vendor/plupload/wp-plupload.js index 809a624776..0fdebf77d1 100644 --- a/src/js/_enqueues/vendor/plupload/wp-plupload.js +++ b/src/js/_enqueues/vendor/plupload/wp-plupload.js @@ -358,6 +358,11 @@ window.wp = window.wp || {}; data: {}, file: file }); + } else if ( file.type === 'image/webp' && up.settings.webp_upload_error ) { + // Disallow uploading of WebP images if the server cannot edit them. + error( pluploadL10n.noneditable_image, {}, file, 'no-retry' ); + up.removeFile( file ); + return; } // Generate attributes for a new `Attachment` model. diff --git a/src/wp-admin/includes/media.php b/src/wp-admin/includes/media.php index bdfb65d103..8c27d15c17 100644 --- a/src/wp-admin/includes/media.php +++ b/src/wp-admin/includes/media.php @@ -2198,6 +2198,11 @@ function media_upload_form( $errors = null ) { $plupload_init['multi_selection'] = false; } + // Check if WebP images can be edited. + if ( ! wp_image_editor_supports( array( 'mime_type' => 'image/webp' ) ) ) { + $plupload_init['webp_upload_error'] = true; + } + /** * Filters the default Plupload settings. * diff --git a/src/wp-includes/media.php b/src/wp-includes/media.php index 5c73db8f30..5a725ca5f9 100644 --- a/src/wp-includes/media.php +++ b/src/wp-includes/media.php @@ -3858,6 +3858,11 @@ function wp_plupload_default_settings() { $defaults['multi_selection'] = false; } + // Check if WebP images can be edited. + if ( ! wp_image_editor_supports( array( 'mime_type' => 'image/webp' ) ) ) { + $defaults['webp_upload_error'] = true; + } + /** * Filters the Plupload default settings. * diff --git a/src/wp-includes/script-loader.php b/src/wp-includes/script-loader.php index d1c2450b5d..3227204501 100644 --- a/src/wp-includes/script-loader.php +++ b/src/wp-includes/script-loader.php @@ -875,6 +875,7 @@ function wp_default_scripts( $scripts ) { /* translators: %s: File name. */ 'error_uploading' => __( '“%s” has failed to upload.' ), 'unsupported_image' => __( 'This image cannot be displayed in a web browser. For best results convert it to JPEG before uploading.' ), + 'noneditable_image' => __( 'This image cannot be processed by the web server. Convert it to JPEG or PNG before uploading.' ), 'file_url_copied' => __( 'The file URL has been copied to your clipboard' ), );