Home / Attachments / Auto convert photos to WEBP (jpg, png)
Duplicate Snippet

Embed Snippet on Your Site

Auto convert photos to WEBP (jpg, png)

Code Preview
php
<?php
/**
 * Konwertuj przesłane obrazy na format WebP
 *
 * Ten fragment kodu automatycznie konwertuje przesłane obrazy (JPEG, PNG, GIF)
 * do formatu WebP w WordPress. Idealny do umieszczenia w pliku functions.php motywu
 * lub do korzystania z wtyczek takich jak Code Snippets lub WPCodeBox.
 * 
 * @package    WordPress_Custom_Functions
 * @author     Mark Harris
 * @link       www.christchurchwebsolutions.co.uk
 *
 * Instrukcje użycia:
 * - Dodaj ten fragment kodu do pliku functions.php swojego motywu lub umieść go jako
 *   nowy fragment w Code Snippets lub WPCodeBox.
 * - Fragment łączy się z procesem przesyłania obrazów w WordPressie i konwertuje
 *   przesłane obrazy do formatu WebP.
 *
 * Opcjonalna Konfiguracja:
 * - Domyślnie oryginalny plik obrazu jest usuwany po konwersji na format WebP.
 *   Jeśli chcesz zachować oryginalny plik obrazu, po prostu zakomentuj lub usuń
 *   linię '@unlink( $file_path );' w funkcji wpturbo_handle_upload_convert_to_webp.
 *   To spowoduje zachowanie oryginalnego przesłanego pliku obrazu obok wersji WebP.
 */
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 new file path for the WebP image
                $new_file_path = $dirname . '/' . $filename . '.webp';
                // 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;
}

Comments

Add a Comment