The code below is a WordPress filter function that enables the preview or thumbnail generation for webp image files. It goes into your theme's functions.php file.
/* Enable preview / thumbnail for webp image files. -- https://websitefunctions.com */
function webp_is_displayable($result, $path) {
if ($result === false) {
$displayable_image_types = array( IMAGETYPE_WEBP );
$info = @getimagesize( $path );
if (empty($info)) {
$result = false;
} elseif (!in_array($info[2], $displayable_image_types)) {
$result = false;
} else {
$result = true;
}
}
return $result;
}
add_filter('file_is_displayable_image', 'webp_is_displayable', 10, 2);
Let's break down the code:
-
The function webp_is_displayable is defined with two parameters: $result and $path. It is a filter callback function that will be called when checking if a file is displayable as an image.
-
Inside the function, it first checks if the initial result value is false. This means that the file is not already determined to be displayable.
-
The variable $displayable_image_types is an array that holds the constant IMAGETYPE_WEBP, which represents the image type for webp files.
-
The @getimagesize($path) function is used to get the image size information for the given file path. It returns an array with information about the image, including the image type.
-
If the image size information is empty (meaning the file is not a valid image), the result is set to false.
-
If the image type from the image size information is not in the $displayable_image_types array, indicating that it is not a webp file, the result is also set to false.
-
If none of the above conditions are met, the result is set to true, indicating that the file is displayable as a webp image.
-
Finally, the function returns the result.
-
The add_filter function is used to add the webp_is_displayable function as a filter to the file_is_displayable_image hook with a priority of 10 and accepting two arguments.
In summary, this code checks if a file is a webp image and sets the result accordingly, allowing WordPress to generate thumbnails or previews for webp images.