add_filter( 'wp_handle_upload', 'dmm_convert_webp' );
function dmm_convert_webp( $upload ) {
if ( isset( $upload['type'] ) && ( $upload['type'] == 'image/jpeg' || $upload['type'] == 'image/png' || $upload['type'] == 'image/gif' ) ) {
$file_path = $upload['file'];
// Verifica se è disponibile ImageMagick o GD
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'];
// Crea un nuovo percorso per l'immagine WebP
$new_file_path = $dirname . '/' . $filename . '.webp';
// Tentativo di salvare l'immagine in formato WebP
$saved_image = $image_editor->save( $new_file_path, 'image/webp' );
if ( ! is_wp_error( $saved_image ) && file_exists( $saved_image['path'] ) ) {
// Successo: sostituisci l'immagine caricata con l'immagine WebP
$upload['file'] = $saved_image['path'];
$upload['url'] = str_replace( basename( $upload['url'] ), basename( $saved_image['path'] ), $upload['url'] );
$upload['type'] = 'image/webp';
// Opzionalmente rimuovi l'immagine originale
@unlink( $file_path );
}
}
}
}
return $upload;
}
Copia il codice nel file functions.php del tuo tema child attivo o utilizza il plugin Code Snippets