AI Verified

Name

Convert To WebP

About

Snippet to convert JPG / PNG / Gif to WebP automatically on upload. Used GD or ImageMagick

Language

PHP

Rating

Voted: 15 by 15 user(s)

Codevault

Super-Snippet-Storage

Scroll down to see more snippets from this codevault.

Wordpress Compatability

The author has indicated that this snippet is compatable up to wordpress version: Not Specified

Our AI bot has checked this snippet is compatable up to wordpress version: 6.1

Code Snippet Plugin Sync

Free & Pro

Download this snippet by clicking the download button, then head over to the Code Snippet Plugin settings in your wordpress admin dashboard, select the import menu then upload this file to import into your wordpress site.

Pro Only (Coming Soon)

You will be able to click a button and sync this snippet to your wordpress site automatically and from your dashboard manage all code snippets across all your wordpress sites that have the Code Snippets Pro plugin installed.

History

Last modified:

18/02/2024

Important Note

This snippet has the following status:

AI Verified

This snippet has been tested by our AI bot, see any comments below.

AI Bot Comments:

Potential vulnerability found : Arbitrary File Deletion
Found on line : 20
Code : unlink( $file_path )
Vulnerable line : 29
Code : $file_path = $upload['file']);

Potential vulnerability found : Arbitrary File Deletion
Found on line : 20
Code : unlink( $file_path )
Vulnerable line : 29
Code : $file_path = $upload['file']);

Found 2 vulnerabilities

Convert To WebP

 
                    
1/**
2 * Convert Uploaded Images to WebP Format
3 *
4 * This snippet converts uploaded images (JPEG, PNG, GIF) to WebP format
5 * automatically in WordPress. Ideal for use in a theme's functions.php file,
6 * or with plugins like Code Snippets or WPCodeBox.
7 *
8 * @package WordPress_Custom_Functions
9 * @author Mark Harris
10 * @link www.christchurchwebsolutions.co.uk
11 *
12 * Usage Instructions:
13 * - Add this snippet to your theme's functions.php file, or add it as a new
14 * snippet in Code Snippets or WPCodeBox.
15 * - The snippet hooks into WordPress's image upload process and converts
16 * uploaded images to the WebP format.
17 *
18 * Optional Configuration:
19 * - By default, the original image file is deleted after conversion to WebP.
20 * If you prefer to keep the original image file, simply comment out or remove
21 * the line '@unlink( $file_path );' in the wpturbo_handle_upload_convert_to_webp function.
22 * This will preserve the original uploaded image file alongside the WebP version.
23 */
24 
25add_filter( 'wp_handle_upload', 'wpturbo_handle_upload_convert_to_webp' );
26 
27function wpturbo_handle_upload_convert_to_webp( $upload ) {
28 if ( $upload['type'] == 'image/jpeg' || $upload['type'] == 'image/png' || $upload['type'] == 'image/gif' ) {
29 $file_path = $upload['file'];
30 
31 // Check if ImageMagick or GD is available
32 if ( extension_loaded( 'imagick' ) || extension_loaded( 'gd' ) ) {
33 $image_editor = wp_get_image_editor( $file_path );
34 if ( ! is_wp_error( $image_editor ) ) {
35 $file_info = pathinfo( $file_path );
36 $dirname = $file_info['dirname'];
37 $filename = $file_info['filename'];
38 
39 // Create a new file path for the WebP image
40 $new_file_path = $dirname . '/' . $filename . '.webp';
41 
42 // Attempt to save the image in WebP format
43 $saved_image = $image_editor->save( $new_file_path, 'image/webp' );
44 if ( ! is_wp_error( $saved_image ) && file_exists( $saved_image['path'] ) ) {
45 // Success: replace the uploaded image with the WebP image
46 $upload['file'] = $saved_image['path'];
47 $upload['url'] = str_replace( basename( $upload['url'] ), basename( $saved_image['path'] ), $upload['url'] );
48 $upload['type'] = 'image/webp';
49 
50 // Optionally remove the original image
51 @unlink( $file_path );
52 }
53 }
54 }
55 }
56 
57 return $upload;
58}

15

Comments

  • L

    2 months ago

    Is it possible to add the IPTC fields of the original file (jpg) to the converted file in the database, or to get the wp_post ID of the new file?
  • L

    2 months ago

    wp_get_attachment_metadata not working.
    

Related Snippets

Please see some snippets below related to this snippet..

General

AI Verified

0

Add a banner to old posts

Added: 3 weeks ago

Last Updated: 3 weeks ago

Adds a banner to posts older than a year.

General

AI Verified

0

Demo

Added: 1 year ago

Last Updated: 11 months ago

Demo

General

AI Verified

0

Current Year Shortcode

Added: 1 month ago

Last Updated: 1 month ago

Use [current_year] anywhere on your site to return the Current Year.

Other Snippets in this Codevault

These are some popular snippets from this users codevault..

General

AI Verified

15

Convert To WebP

Added: 3 months ago

Last Updated: 1 week ago

Snippet to convert JPG / PNG / Gif to WebP automatically on upload. Used GD or ImageMagick

WordPress Admin

AI Verified

5

Really Simple Duplications

Added: 3 months ago

Last Updated: 2 weeks ago

A snippet to duplicate posts and pages and CPTS.

General

AI Verified

1

Address Autocomplete For Elementor Forms

Added: 2 weeks ago

Last Updated: 2 weeks ago

Allows you to uses Google Maps API to autosuggest an address in an Elementor Form.