Wenn Sie das SVG Support-Plugin verwenden, werden Sie feststellen, dass die SVG-Bild-URL unvollständig ist, wenn das WPML Media Translation Plugin aktiv ist.
Ein Beispiel, wie die Bild-URL in den übersetzten Seiten aussieht:
Mit aktivierter WPML Media Translation: https://my-domain.com/wp-content/uploads/my-logo.svg
Ohne aktivierte WPML Media Translation: https://my-domain.com/wp-content/uploads/2022/02/my-logo.svg
Wie Sie sehen können liegt das Problem am falschen Pfad. Laut WPML liegt die Ursache in der Implementierung von dem Plugin SVG Support. Bisher ist das Problem nicht behoben worden.

WPML selbst bietet einen Workaround für dieses Problem an. Allerdings wird dort geraten Änderungen am Code vom SVG Support-Plugin vorzunehmen. Das ist nicht nachhaltig, da beim Update dieses Plugins die gemachten Änderungen verloren gehen könnten (wenn der Autor des Plugins genau diese Datei aktualisiert). Auch ist es kein guter Stil und von WordPress nicht empfohlen, Änderungen direkt im Code von Plugins vorzunehmen.
Da ich selbst auf das Problem gestoßen bin und eine Lösung wollte, die auch nach Updates stabil funktioniert, habe ich dazu eigenen Code geschrieben, den ich gerne nachfolgende weitergeben möchte.
Hier finden Sie die Lösung:
Um das Problem zu lösen, wird folgender Code der WordPress-Instanz hinzugefügt. Das geht mit dem Code Snippets Plugin oder wird in die functions.php des verwendeten Themes hinzugefügt.
Profis haben für solche Anpassungen ohnehin ein separates Plugin und fügen den Code dort ein.
function cw_svgs_generate_svg_attachment_metadata( $metadata, $attachment_id ) {
if ( get_post_mime_type( $attachment_id ) != 'image/svg+xml' || FALSE === get_option('uploads_use_yearmonth_folders') )
{
return $metadata;
}
$metadata['file'] = date("Y") . '/' . date("m") . '/' . $metadata['file'];
return $metadata;
}
add_filter( 'wp_generate_attachment_metadata', 'cw_svgs_generate_svg_attachment_metadata', 11, 3 );
Wichtig: Die SVGs müssen in WordPress -> Medien erneut hochgeladen werden, damit die Metadaten erneut erstellt werden. Erst dann erscheinen sie korrekt in den übersetzten Seite (ggf. automatische Übersetzung erneut anstoßen).
Ein paar Worte zur Lösung
WordPress bietet das Konzept von Filtern und Actions und das machen wir uns hier zunutze um uns in die Code-Ausführung von SVG Support von außen einzuklinken.
Die Funktion cw_svgs_generate_svg_attachment_metadata wird jedes Mal aufgerufen, wenn eine Mediendatei in WordPress hochgeladen wird. Wenn es sich nicht um eine SVG-Datei handelt oder die Option „Meine Uploads in monats- und jahresbasierten Ordnern organisieren“ in Einstellungen -> Medien nicht aktiviert ist, soll der Dateipfad nicht verändert werden und das Array wird genauso zurückgegeben. Andernfalls wird Jahr und Monat als Pfad ergänzt und das Array zurückgeliefert an die weitere Ausführung in SVG Support.
Der Dateiname steht bereits im Array $metadata, da wir über den Parameter Priorität (Wert 11) von add_filter, festgelegt haben, dass die Funktion nach der Filter-Funktion wp_generate_attachment_metadata, die durch SVG Support ausgeführt wird (dort wird ein niedrigerer Prioritätswert verwendet).