怎么让wordpress支持WebP格式的图片

Wordpress 思享 354浏览
摘要:
WebP是Google早在2010年提出的一种新的图像压缩格式。与JPEG和PNG图像相比,平均文件大小要小30%左右,这使得网站速度更快,使用的带宽更少。根据caniuse网站的统计,现在所有的现代浏览器基本上都支持WebP。值得注意的是,从5.8版本开始,WordPress可以像上传JPEG或PNG图片一样,直接在WordPress中上传WebP图片。将以下代码添加到当前主题函数模板functions.php中,以解决上传问题。函数webp _ upload _ mimes { $ existing _ mimes[' webp ']= ' image/webp ';返回$ existing _ mimes} add _ filter

WebP 是 Google 早在 2010 年就提出的一种新的图片压缩格式,相比 JPEG 和 PNG 格式的图片,文件大小平均小了 30% 左右,从而使得网站的速度更快,使用的带宽也更少,根据 caniuse 网站的统计,目前所有现代浏览器基本都支持 WebP 了。

webp

值得注意的是,WordPress 从 5.8 版本开始,就可以像上传 JPEG 或者 PNG 图片一样,在 WordPress 直接上传 WebP 图片。所以以下教程是针对5.8以下版本的

将下面代码添加到当前主题函数模板functions.php中,即可解决上传问题。

function webp_filter_mime_types( $array ) {$array['webp'] = 'image/webp';return $array;}add_filter( 'mime_types', 'webp_filter_mime_types', 10, 1 );
function webp_upload_mimes($existing_mimes) { $existing_mimes['webp'] = 'image/webp'; return $existing_mimes;}add_filter('mime_types', 'webp_upload_mimes');

虽然已经可以上传WebP格式的图片了,但在媒体列表中看不到缩略图,这是因为WordPress在用 wp_generate_attachment_metadata()函数生成图片数据时,使用了file_is_displayable_image()函数判断文件是否为图片,判断WebP图片的结果为否,因此中断了保存图片数据的操作。

该函数位于:wp-admin/includes/image.php展开

解决办法是在主题的functions.php里添加以下代码:

function webp_file_is_displayable_image($result, $path) {$info = @getimagesize( $path );if($info['mime'] == 'image/webp') {$result = true;}return $result;}add_filter( 'file_is_displayable_image', 'webp_file_is_displayable_image', 10, 2 );
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);

推荐阅读

WordPress4.9分支最新版更新至4.9.25

WordPress其实很早之前就已经更新到6.x版本了,不过本博客一直使用4.9分支。幸运的是,这个版本的分支仍在更新中。该版本已于2024年1月31日更新至4.9.25版本。 下载链接 [下载]https://cn.wordpress.......

纯代码实现wordpress附件页面重定向到文章或首页

前几天发现wordpress网站有评论留言的回顾。结果一看就是附件页面的垃圾评论。这才发现原来wordpress上传的附件也会有对应的页面。难怪之前收录了很多附件页面,但是我的机器人禁止了,忘记了。本来以为会禁用,结果只找到了在线使用插件的方法。最后......

Warning: call_user_func_array() expects parameter 1 to be a valid callback, function ‘fake_update_callback’

这是当一个被挂钩的函数名与挂钩关联不匹配时…这可能发生在重命名一个函数时,而不是在挂钩关联中重命名函数名时。如果强迫症受不了wordpress的主题提示,可以使用插件WP降级将版本设置为当前版本。...