Ändert den Upload direkt ins webP Format.
add_filter('wp_handle_upload', 'convert_image_to_webp');
function convert_image_to_webp($upload) {
$file_path = $upload['file'];
$file_type = mime_content_type($file_path);
// Nur JPEG und PNG verarbeiten
if (!in_array($file_type, ['image/jpeg', 'image/png'])) {
return $upload;
}
// Neue Datei mit .webp-Endung
$webp_path = preg_replace('/\.(jpg|jpeg|png)$/i', '.webp', $file_path);
// Bild mit GD laden
if ($file_type === 'image/jpeg') {
$image = imagecreatefromjpeg($file_path);
} elseif ($file_type === 'image/png') {
$image = imagecreatefrompng($file_path);
// PNG: Transparenz erhalten
imagepalettetotruecolor($image);
imagealphablending($image, true);
imagesavealpha($image, true);
}
// Als WebP speichern
if (isset($image)) {
imagewebp($image, $webp_path, 80); // Qualität: 0-100
imagedestroy($image);
// Originalbild optional löschen
unlink($file_path);
// Upload-Pfad anpassen, falls du möchtest, dass WP die WebP-Datei verwendet
$upload['file'] = $webp_path;
$upload['url'] = preg_replace('/\.(jpg|jpeg|png)$/i', '.webp', $upload['url']);
$upload['type'] = 'image/webp';
}
return $upload;
}