WordPress免插件实现上传图片自动转为WebP格式 加速网站打开速度

起因

有网友咨询本站,WordPress搭建的网站图片加载过慢,导致页面整体打开速度也慢不少,链接发来经查看一些图片都300-400KB,这样小水管的服务器打开加载肯定慢了,不过网友了解到WebP格式图片,想把上传的图片自动转为WebP格式,这样图片体积能缩小很多,且图片质量也说的过去,页面打开的速度也能提升。下面先说一下什么是WebP格式和为什么要用要使用WebP格式的图片:

为什么要使用WebP格式的图片

1.WebP格式图片是由 Google 推出的一种现代图像格式;

2.用来替代传统的图像格式如 JPEG、PNG、GIF 等;

3.相比 JPEG、PNG和GIF,WebP 通常可以提供更小的文件大小,同时保持相似或更好的图像质量;

4.较小的图片体积让网页加载更快,能够提高用户体验。快速加载的网页对 SEO(搜索引擎优化)更好,提升网站在 Google、百度 等搜索引擎中的排名。

自动转化WebP代码功能说明:

1.自动识别并将上传的图片jpeg、png、gif格式的图片转换为WebP格式;

2.图像质量为90%(如果要设置其他值,可更改代码中的 $quality = 90,建议值 70-90% );

3.不保留原文件(如果要保留,删除或注释这个代码 @unlink($file_path););

4.增加转换容错,极少图片可能会转换失败,则直接上传原图,很少会出现转换失败。

开启WordPress上传图片自动转为WebP格式

找到主题文件 function.php 文件,打开后,在最后面添加如下代码:

/**
 * 上传图片自动转为WebP格式
 */
add_filter('wp_handle_upload', 'wpturbo_handle_upload_convert_to_webp');
function wpturbo_handle_upload_convert_to_webp($upload) {
    if (in_array($upload['type'], ['image/jpeg', 'image/png', 'image/gif'])) {
        $file_path = $upload['file'];
        if (extension_loaded('imagick') || extension_loaded('gd')) {
            $image_editor = wp_get_image_editor($file_path);
            if (!is_wp_error($image_editor)) {
                // Set WebP quality (adjust as needed)
                $quality = 90; // Adjust between 0 (low) to 100 (high)
                $image_editor->set_quality($quality); // Set quality for WebP conversion
                $file_info = pathinfo($file_path);
                $dirname = $file_info['dirname'];
                $filename = $file_info['filename'];
                $def_filename = wp_unique_filename($dirname, $filename . '.webp');
                $new_file_path = $dirname . '/' . $def_filename;
                $saved_image = $image_editor->save($new_file_path, 'image/webp');
 
                // 检查转换是否成功且文件大小不为0
                if (!is_wp_error($saved_image) && file_exists($saved_image['path']) && filesize($saved_image['path']) > 0) {
                    // Update the upload data to use the WebP image
                    $upload['file'] = $saved_image['path'];
                    $upload['url'] = str_replace(basename($upload['url']), basename($saved_image['path']), $upload['url']);
                    $upload['type'] = 'image/webp';
                    // 删除原始文件
                    @unlink($file_path);
                } else {
                    // 如果转换失败或文件为0KB,删除可能创建的无效WebP文件
                    if (file_exists($new_file_path)) {
                        @unlink($new_file_path);
                    }
                    // 保持原始文件不变
                }
            }
        }
    }
    return $upload;
}

注意:WordPress主题更换或升级后,需要再次修改此文件。

建议代码用Code Snippets、WPCode等插件进行统一管理。

展开浏览全文
THE END
版权免责声明 01、本站名称:资源e站
02、本站网址:https://www.zye.cc
03、本站所有资源来源于互联网搜集并整理,如有侵权请联系站长进行删除!
04、本站分享的资源仅供参考学习,您必须在下载后二十四个小时之内删除!
05、本站分享目的仅供学习研究和借鉴,请不要用于商业用途以及违法用途!
06、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
07、禁止用本站源码用于非法商业用途,不得违反国家法律,否则后果自负!
08、如发现资源链接无法下载、失效或广告,请联系管理员或提交工单处理!
09、所有资源均可通过日常签到等任务进行免费兑换,记得每天到本站签到!
10、本站所有资源积分兑换只是赞助,收取费用仅维持本站的日常运营所需!
11、如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励!
12、如需商用请购买正版,由于未及时购买正版发生侵权行为,与本站无关!
13、如果您发现本站分享的资源侵犯了您的权益,请邮件联系我们进行删除!
14、我们无法辨别该内容是否具有版权,若侵犯了您的权益请联系我们删除!
15、本站禁止以任何方式发布或转载任何违法相关信息,发现请向站长举报!
16、本站所有资源不代表本站立场,并不代表赞同其观点和对其真实性负责!
17、本站资源大多存储在云盘,如发现链接失效,请联系我们第一时间更新!
0
分享海报
E站十周年庆,升级成为(全站通VIP)只需288元,原价688元,限时开通,即将复原! 点击开通
显示验证码

社交账号快速登录

Copyright © 资源e站 ZYE.CC