WordPress网站免插件实现上传图片自动转为WebP格式
用一段php代码,免插件的方式,实现图片上传WordPress网站,自动将JPEG、PNG转换为WebP格式图片。大大提高网站文章编辑的效率。之前我在写文章的时候,上传图片到网站的流程是先手动把本地的图片到一些站点,比如Squoosh、TinyPNG,进行WebP格式转化压缩,之后再手动上传到网站。这个过程实际上非常耗时,且机械重复没什么技术含量。一直想着有什么方法可以上传图片到网站的过程中自动就把这些活干了,省时省力。以前也尝试过一些插件,要么免费额度太少,要么过多的插件影响网站速度。
代码功能
将上传的 JPEG(JPG)、PNG 格式图片自动转换成 WEBP 格式,
可选功能一:删除原图片
可选功能二:禁止生成其他尺寸的缩略图
代码教程
子比主题:将下方代码加入/wp-content/themes/zibll/functions.php文件或者func.php文件中(两个文件性质一样,只是 func.php 子比主题更新不会被覆盖掉,也就不需要再次修改),注意加在 <?php 的后面
其他注意也是一样
/** * WordPress自动将上传图片转换为WebP格式,同时删除原文件 * 图像质量默认为80%,可根据需要调整 */ add_filter('wp_handle_upload', 'auto_convert_to_webp');function auto_convert_to_webp($upload) { // 检查是否为支持的图片格式 if (in_array($upload['type'], ['image/jpeg', 'image/png'])) { $file_path = $upload['file']; $quality = 80; // 可调整质量参数,建议70-90% // 检查服务器是否支持图像处理 if (extension_loaded('imagick') || extension_loaded('gd')) { $image_editor = wp_get_image_editor($file_path);
if (!is_wp_error($image_editor)) { // 生成WebP文件路径 $webp_path = preg_replace('/\.[^.]+$/', '.webp', $file_path);
// 保存为WebP格式 $image_editor->save($webp_path, 'image/webp');
// 更新上传信息指向WebP文件 $upload['file'] = $webp_path; $upload['type'] = 'image/webp'; $upload['url'] = preg_replace('/\.[^.]+$/', '.webp', $upload['url']);
// 删除原始文件(可选) @unlink($file_path); } } } return $upload;}//禁止生成缩略图(不需要将下面的全部删除)function luesuotu( $sizes ){ unset( $sizes[ 'thumbnail' ]); unset( $sizes[ 'medium' ]); unset( $sizes[ 'medium_large' ] ); unset( $sizes[ 'large' ]); unset( $sizes[ 'full' ] ); unset( $sizes['1536x1536'] ); unset( $sizes['2048x2048'] ); return $sizes;}
add_filter( 'intermediate_image_sizes_advanced', 'luesuotu' );
不需要删除原图,可将此段代码删除或注释掉 @unlink($file_path);
不需要禁用生成缩略图,可将 //禁止生成缩略图 以下的代码全部删除