Zum Inhalt springen
Startseite » WP Snippets » Neu Upload direkt ins webp format ändern

Upload direkt ins webp format ändern

Ä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;
}