WP上传图片自动转Webp

2025-07-02 105 0

后台安装Code Snippets插件,新建代码,保存激活。

Convert To WebP - Code Snippets Cloud

/**
 * Convert Uploaded Images to WebP Format
 *
 * This snippet converts uploaded images (JPEG, PNG, GIF) to WebP format
 * automatically in WordPress. Ideal for use in a theme's functions.php file,
 * or with plugins like Code Snippets or WPCodeBox.
 *
 * @package    WordPress_Custom_Functions
 * @autor      Mark Harris
 * @link       www.christchurchwebsolutions.co.uk
 *
 * Usage Instructions:
 * - Add this snippet to your theme's functions.php file, or add it as a new
 *   snippet in Code Snippets or WPCodeBox.
 * - The snippet hooks into WordPress's image upload process and converts
 *   uploaded images to the WebP format.
 *
 * Optional Configuration:
 * - By default, the original image file is deleted after conversion to WebP.
 *   If you prefer to keep the original image file, simply comment out or remove
 *   the line '@unlink( $file_path );' in the wpturbo_handle_upload_convert_to_webp function.
 *   This will preserve the original uploaded image file alongside the WebP version.
 */
 
add_filter('wp_handle_upload', 'wpturbo_handle_upload_convert_to_webp');
 
function wpturbo_handle_upload_convert_to_webp($upload) {
    if ($upload['type'] == 'image/jpeg' || $upload['type'] == 'image/png' || $upload['type'] == 'image/gif') {
        $file_path = $upload['file'];
 
        // Check if ImageMagick or GD is available
        if (extension_loaded('imagick') || extension_loaded('gd')) {
            $image_editor = wp_get_image_editor($file_path);
            if (!is_wp_error($image_editor)) {
                $file_info = pathinfo($file_path);
                $dirname   = $file_info['dirname'];
                $filename  = $file_info['filename'];
 
                // Create a unique file path for the WebP image
                $def_filename = wp_unique_filename($dirname, $filename . '.webp');
                $new_file_path = $dirname . '/' . $def_filename;
 
                // Attempt to save the image in WebP format
                $saved_image = $image_editor->save($new_file_path, 'image/webp');
                if (!is_wp_error($saved_image) && file_exists($saved_image['path'])) {
                    // Success: replace the uploaded image with 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';
 
                    // Optionally remove the original image
                    @unlink($file_path);
                }
            }
        }
    }
 
    return $upload;
}

相关文章

免费获得阿里云ESA套餐
花花世界
美好的器物会激活多巴胺
你努力的说服自己,这个世界是个巨大的草台班子,很多人是不懂装懂的的演员,他们没有那么专业,也没有能力掀开真相的门帘,你安慰鼓励自己,说大家还有提升的空间,但谁敢相信,这空间的单位居然是光年。好在这个世界,还有人努力的坚守,圣人的荔枝,大帅的霸王,美的更美,丑的更丑。

发布评论

WeChat
RSS
Weibo