Wenn die Seite trÀge wird, sind die Bilder meist schuld
GroĂe Bilder. Falsches Format.
Kein Lazy Loading. Keine Skalierung.
Dann brauchst Du Dich ĂŒber lange Ladezeiten nicht wundern.
Und auch nicht ĂŒber schwache Core Web Vitals.
Ich zeig Dir, wie ich’s mache – ohne Pluginschlacht, aber mit Verstand.
Die wichtigsten Bildformate im Vergleich
| Format | Typ | Vorteil | Nachteil |
|---|---|---|---|
| JPEG | verlustbehaftet | klein bei Fotos | Artefakte bei Text & Logos |
| PNG | verlustfrei | ideal fĂŒr Transparenz & Icons | groĂe DateigröĂe |
| WebP | modern | klein + transparent + animiert | IE11 inkompatibel (egal) |
| AVIF | ultra-modern | noch kleiner, top bei Fotos | schlechter Support (Stand 2025) |
| SVG | Vektor | unendlich skalierbar | Sicherheitsrisiko bei User-Upload |
Ich setze auf WebP fĂŒr alle Standardbilder.
PNG fĂŒr Logos mit Transparenz.
SVG nur, wenn ich’s selbst gezeichnet hab.
Upload-Handling in WordPress
WordPress wandelt standardmĂ€Ăig nichts um.
Also musst Du nachhelfen.
Ich nutze ein Skript, das beim Upload automatisch nach WebP konvertiert.
add_filter('wp_generate_attachment_metadata', 'konvertiere_webp', 10, 2);
function konvertiere_webp($metadata, $attachment_id) {
$upload_dir = wp_upload_dir();
$file_path = get_attached_file($attachment_id);
$image = wp_get_image_editor($file_path);
if (!is_wp_error($image)) {
$webp_path = preg_replace('/\.(jpe?g|png)$/i', '.webp', $file_path);
$image->set_quality(80);
$image->save($webp_path, 'image/webp');
}
return $metadata;
}
Damit hast Du gleich eine WebP-Version.
Nur brauchst Du sie auch im Frontend.
WebP ausgeben im Theme
<picture>
<source srcset="<?= get_template_directory_uri(); ?>/img/beispiel.webp" type="image/webp">
<img src="<?= get_template_directory_uri(); ?>/img/beispiel.jpg" alt="Beispielbild">
</picture>
Oder wenn Du Advanced Custom Fields nutzt:
<?php
$bild = get_field('hero_bild');
$webp = preg_replace('/\.(jpe?g|png)$/i', '.webp', $bild['url']);
?>
<picture>
<source srcset="<?= $webp ?>" type="image/webp">
<img src="<?= $bild['url'] ?>" alt="<?= esc_attr($bild['alt']) ?>">
</picture>
Lazy Loading aktivieren
WordPress macht das inzwischen von selbst – ab Version 5.5.
Aber wenn Du’s prĂŒfen willst:
<img loading="lazy" src="<?= $bild ?>" alt="...">
Oder per Filter deaktivieren (z. B. fĂŒr Above-the-Fold):
add_filter('wp_img_tag_add_loading_attr', function($value, $image, $context) {
if ($context === 'homepage-hero') {
return false;
}
return $value;
}, 10, 3);
Bilder vor dem Upload optimieren
Ich empfehle:
- TinyPNG (online oder API)
- ImageMagick per Skript
- Squoosh (lokal, fĂŒr Designer)
- ShortPixel CLI (fĂŒr Massen-Optimierung)
Beispiel mit ImageMagick auf der Kommandozeile:
convert input.jpg -resize 1600x -quality 80 output.webp
Oder als PHP-Skript mit exec:
exec('magick ' . escapeshellarg($original) . ' -resize 1600x -quality 80 ' . escapeshellarg($ziel));
Tabelle: Tools & Einsatz
| Tool | Zweck | Typ |
|---|---|---|
| TinyPNG | verlustarme Kompression | online/API |
| ShortPixel | Batch-Optimierung | Plugin/CLI |
| ImageMagick | Automatisierung, WebP | CLI |
| Squoosh | manuelle Kontrolle | lokal/WebApp |
| WebP Express | dynamische Umwandlung | Plugin |
Mein Setup fĂŒr performante Bildverwendung
| MaĂnahme | Umsetzung |
|---|---|
| Format | WebP (primÀr), PNG nur bei Bedarf |
| GröĂe | max. 1600 px Breite |
| Benennung | sprechende Dateinamen mit Bindestrich |
| Ausgabe | <picture>-Element mit WebP-Fallback |
| Lazy Loading | ĂŒberall auĂer Headerbild |
| Komprimierung | vor Upload mit TinyPNG oder ImageMagick |
Kurz und knackig
Ein Bild sagt mehr als tausend Worte –
aber es darf trotzdem keine 2 MB wiegen.
Wenn Du Deine Bilder im Griff hast,
hast Du Ladezeit, SEO und UX im Griff.
Und WordPress macht dann, was es soll:
Schnell, sauber, lesbar.