Zum Inhalt springen Zur Seitenleiste springen

Dies ist das technische Support-Forum für WPML – das mehrsprachige WordPress-Plugin.

Mitlesen können alle, doch nur WPML-Kunden können hier Fragen veröffentlichen. Das WPML-Team antwortet im Forum an 6 Tagen pro Woche, 22 Stunden am Tag.

Sun Mon Tue Wed Thu Fri Sat
- 7:00 – 12:00 7:00 – 12:00 7:00 – 12:00 7:00 – 12:00 7:00 – 12:00 -
- 12:00 – 15:00 12:00 – 15:00 12:00 – 15:00 13:00 – 15:00 13:00 – 15:00 -

Supporter-Zeitzone: Europe/Vienna (GMT+02:00)

Schlagwörter: 

Dieses Thema enthält 10, hat 0 Stimmen.

Zuletzt aktualisiert von Lucas Vidal de Andrade Vor 1 Monat, 1 Woche.

Assistiert von: Lucas Vidal de Andrade.

Autor Beiträge
Februar 6, 2026 um 8:42 #17798434

Robert Rosanke

Zusammenfassung: Es gibt ein inkonsistentes Verhalten bei der Übertragung von Feldänderungen in Übersetzungen. Während das Leeren oder Löschen von Werten bei admin_texts korrekt funktioniert, bleiben bei post_meta und term_meta veraltete Übersetzungen bestehen, wenn der Wert in der Hauptsprache entfernt wurde.

Umgebung:
- WordPress + WooCommerce + WPML
- Custom Fields registriert via wpml-config.xml (Einstellung: translate)

Vergleich des Verhaltens
- admin_texts (Optionen): String leeren oder delete_option() ==> Übersetzung wird ebenfalls leer/gelöscht (Korrekt)
- post_meta / term_meta: String leeren oder delete_post_meta() ==> Übersetzung wird nicht leer/gelöscht, Alter Wert bleibt stehen (Fehlerhaft)

Schritte zur Reproduktion:
1. Registrierung eines Custom Fields (post_meta) oder Kategorie-Felds (term_meta) via wpml-config.xml als "textarea / translate".
2. Wert in der Hauptsprache hinterlegen und über WPML übersetzen.
3. Validierung im Frontend: Übersetzung wird korrekt angezeigt.
4. Der Fehlerfall: Das Feld in der Hauptsprache leeren (leerer String "" speichern) oder komplett löschen (via delete_post_meta() oder WC_Product->delete_meta_data()).
5. Ergebnis: In der übersetzten Version des Beitrags/Produkts/Begriffs wird weiterhin der alte, veraltete Text ausgegeben. WPML propagiert den "leeren" Zustand nicht an die Übersetzungstabellen.

Betroffene Bereiche: Das Problem wurde bei post_meta (WooCommerce Produkte) und term_meta (Produktkategorien) repliziert.

Auswirkung: Es ist aktuell unmöglich, optionale Texte von übersetzten Website-Versionen zu entfernen. Sobald ein Text einmal übersetzt wurde, bleibt er in der Zweitsprache bestehen, selbst wenn er im Original gelöscht wurde.

Gewünschte Aktion: Bitte lassen Sie dies durch einen Entwickler auf einer Testinstanz prüfen. Die Synchronisations-Logik für Meta-Felder sollte an das korrekte Verhalten der admin_texts angepasst werden.

Februar 9, 2026 um 5:31 #17803704

Robert Rosanke

Hallo Lucas,

ich versuche, euch am Mittwoch Code zu schreiben, der den Fehler reproduziert bringe ihn auf deiner Test-Website ein.

Ich hoffe, dass ihr das Setup wenigstens schon entsprechend unserer Website vorbereitet habt.
Oft müssen wir bei den Testseiten erstmal 30 Minuten investieren, um WooCommerce und WPML vollständig einzurichten.
Das ist nicht gut.
Wir haben bereits oben die Abläufe reproduzierbar beschrieben, theoretisch könntet ihr das Thema komplett alleine lösen.

Wir helfen euch von mir aus. Bitte richtet die Seite jedoch schon vorab entsprechend unserer Website Config ein. Dafür habt ihr ja die Debug-Informationen im Ticket erhalten.
Haupt-Sprache DE und dann ein paar Zusatzspachen in Unterverzeichnissen. Ein Testprodukt mit Kategorien anlegen, etc.
Danke.

Februar 9, 2026 um 11:49 #17804879

Lucas Vidal de Andrade
WPML-Unterstützer seit 11/2023

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Portugiesisch, Brasilien (Português )

Zeitzone: Europe/Vienna (GMT+02:00)

Hallo,
das Ziel hier ist nicht, das Setup Ihrer Website exakt nachzubilden, sondern im Gegenteil: Das Problem in einer isolierten, minimalen Umgebung zu reproduzieren – ganz ohne externe Einflüsse.

Die Testseite ist bereits eingerichtet mit WPML in Englisch und Deutsch sowie einem WooCommerce-Produkt mit Kategorie.
Für den Test genügt also ein einziges Produkt und eine Kategorie.

Ich möchte ein Beispiel Ihrer konkreten Umsetzung sehen. Die bisherige Beschreibung ist eher auf hoher Ebene gehalten, und es gibt viele kleine Details, die sich unterscheiden können. Deshalb bitte ich Sie, das Problem in der bestehenden Testumgebung nachzubauen – und zwar so minimal wie möglich, gerade ausreichend, um den Fehler nachvollziehbar zu machen.

Vielen Dank für Ihre Unterstützung.

Februar 11, 2026 um 10:36 #17812356

Robert Rosanke

Hallo Lucas, ich wollte den Fehler nun reproduzieren und habe ein minimales Plugin dafür geschrieben.

Leider ist auto translate auf der Staging nicht an.
Ich kann also nicht testen, da WPML dann nicht eigenständig Übersetzungen erstellen und speichern würde, sondern ich selbst.
Bitte aktiviere das auto translate feature, damit ich die Tests abschließen kann.

Februar 11, 2026 um 10:45 #17812368

Robert Rosanke

Edit: Okay, der Fehler besteht sogar beim manuellen Translate. Das ist beeindruckend und hätte ich nicht gedacht.

Anbei die Screenshots nummeriert.
Von Schritt 1 zu Schritt 4.

1. Produkt bearbeiten, Text in Metafeld anlegen und Speichern. Frontend wird in Original dann der korrekte Wert angezeigt. Übersetzung mit ATE freischalten, klappt auch.
2. nun bearbeite ich die Felder im Originalprodukt und leere sie. Ich entferne also den Testinhalt und speichere.
3. Frontend-Test EN Originalsprache: korrekt, werte wurden geleert.
4. ATE Übersetzung aktualisiert. Felder sind noch veraltet bei der Übersetzung. WPML aktualisiert die Werte nicht, sie müssten eigentlich beide leer sein. Weder mit update_metadata noch mit delete_metadata.

WPML scheint leere Werte zu ignorieren, was definitiv unerwartetes Verhalten ist.
Das betrifft auch term_meta.
Für Produktkategorien haben wir das Problem live auch.

admin_options sind okay, dort wird korrekt geleert.

1__EN_alle-Felder-haben-Text__Screenshot_20260211_112809.png
2__leere-felder-speichern__Screenshot_20260211_113723.png
3__Ansicht_EN-korrekt___Screenshot_20260211_113817.png
4__Ansicht_DE-falsch-muesste-leer-sein__Screenshot_20260211_113917.png
Februar 11, 2026 um 10:50 #17812434

Robert Rosanke

Edit 2: Ich möchte darauf hinweisen, dass uns der Fehler im WooCommerce Kontext aufgefallen ist. Es ist nicht auszuschließen, dass er ggf. das komplette post_meta handling in WPML betrifft.
Eventuell sind auch Seiten, Beiträge und andere CPTs betroffen.

Erwartung: Wenn ich einen leeren Wert '' speichere oder ein Feld lösche, wird dieser Vorgang korrekt synchronisiert.

Aktuelles verhalten: WPML synchronisiert keine leeren Werte oder Löschvorgänge in Übersetzungen, was zu unterwartetem verhalten führt, weil Übersetzungen veraltete Metadaten aufweisen.

Februar 11, 2026 um 13:25 #17812867

Lucas Vidal de Andrade
WPML-Unterstützer seit 11/2023

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Portugiesisch, Brasilien (Português )

Zeitzone: Europe/Vienna (GMT+02:00)

Hallo,

vielen Dank, dass Sie das Problem in der Testumgebung reproduziert haben. Ich habe Ihr Ticket zur internen Triagestufe weitergeleitet, damit unsere Entwickler prüfen können, wie wir am besten vorgehen.

Ich kann aktuell noch nicht sagen, wie die Rückmeldung ausfallen wird. Bitte haben Sie Verständnis dafür, dass wir benutzerdefinierten Code grundsätzlich nicht offiziell unterstützen, insbesondere wenn es eine vorhandene, kompatible Lösung wie ACF gibt.

Sobald ich eine Rückmeldung vom Team erhalte, melde ich mich wieder hier bei Ihnen.

Vielen Dank.

Februar 23, 2026 um 10:10 #17842208

Lucas Vidal de Andrade
WPML-Unterstützer seit 11/2023

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Portugiesisch, Brasilien (Português )

Zeitzone: Europe/Vienna (GMT+02:00)

Hallo Robert,

kurzes Update: Wir haben das Verhalten intern bestätigt und an die Entwickler weitergegeben. Das Thema ist dort gesammelt und wurde – abhängig von Prioritäten und aktueller Auslastung – für die nächste Iteration zur Prüfung markiert.

Sobald ich von den Entwicklern eine Rückmeldung habe, melde ich mich hier wieder.

Viele Grüße
Lucas

März 6, 2026 um 8:41 #17877062

Lucas Vidal de Andrade
WPML-Unterstützer seit 11/2023

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Portugiesisch, Brasilien (Português )

Zeitzone: Europe/Vienna (GMT+02:00)

Hallo,

ich habe noch keine definitive Antwort zu diesem Problem. Wir hatten nur wenige Vorfälle dieses Problems, daher sammeln wir alle Fälle und werden sie in der nächsten Iteration analysieren. Dafür gibt es keinen festgelegten Zeitplan.

Sobald ich Neuigkeiten habe, werde ich Sie informieren.

März 6, 2026 um 10:34 #17877492

Robert Rosanke

Hallo Lucas,

danke für dein ehrliches Update.
Danke auch, dass du dieses Thema in die nächste Iteration einbringen konntest.

Ich möchte darauf hinweisen, dass wir durch diesen Fall bereits Falschinformationen auf übersetzten Seiten stehen hatten, die rechtliche Konsequenzen bedeuten könnten.

Wir haben bei Produkten z.B. optionale Felder zur Bekanntgabe von Anpassungen der Lieferzeiten in postmeta gespeichert.
Damit können wir bei Bedarf globale Lieferzeiten one off überschreiben.

Beispiel:
1. wir legen eine Lieferzeit-Abweichung in der Originalsprache für eine Produktvariante fest (korrekter sync des Metafelds in alle Sprachen)
2. wir entfernen die Lieferzeit-Überschreibung (Übersetzungen zeigen weiterhin den falschen, veralteten Wert, weil leere postmeta-Felder und delete-Operationen nicht von WPML synchronisiert werden)

Dadurch zeigen Übersetzungen von Produktseiten falsche Lieferzeiten, was mindestens zu Tickets, eventuell auch zu rechtlichen Konsequenzen führen kann.

Wir hatten mal einen Werbebanner via Metafeld mit Text befüllt. In der Originalsprache war er schon längst gelöscht, weil die Aktion vorbei war. Bei Übersetzungen bleibt er einfach stehen und wir kriegen ihn nicht weg, weil dort veraltete Inhalte in der Datenbank stehen und niemals von WPML geleert werden.

Damit funktioniert eine wichtige Kernfunktion von WPML nicht.
- Pflichtfelder, die immer gefüllt sind, werden korrekt synchronisiert
- optionale Felder, die auch leer sein können, werden nicht korrekt behandelt

Und es scheinen alle postmeta und termmeta-Operationen betroffen zu sein.
Das ist ein großer Bereich der WordPress-Datenstruktur.
Metadaten sind ein Kernbestandteil des Systems.

Wir bitten daher die Priorisierung entsprechend der Schwere und Reichweite des Fehlers zu betrachten.

Vielen Dank für deinen Einsatz, ich schätze es sehr!

März 9, 2026 um 10:14 #17881317

Lucas Vidal de Andrade
WPML-Unterstützer seit 11/2023

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Portugiesisch, Brasilien (Português )

Zeitzone: Europe/Vienna (GMT+02:00)

Hallo Robert,

vielen Dank für Ihre weitere Rückmeldung und für die konkreten Beispiele.

Ich möchte unsere Position hierzu klarer formulieren:

Das von Ihnen beschriebene Verhalten ist aus unserer Sicht nicht grundsätzlich ein unerwartetes Verhalten oder eine Fehlfunktion von WPML — zumindest nicht in der Weise, wie Sie es beschreiben.

Ja, gelöschte oder geleerte Felder erscheinen nicht mehr im Translation Editor. Das führt dazu, dass diese Werte in den Übersetzungen nicht automatisch gelöscht oder geleert werden können. Dieser Teil ist etwas, das in WPML künftig verbessert werden müsste.

Gleichzeitig gilt aber auch: Felder, die in WPML auf **„Übersetzen“** gesetzt sind, können nicht automatisch in den Übersetzungen gelöscht oder geleert werden. Genau das ist mit **„Übersetzen“** nicht gemeint. „Übersetzen“ bedeutet, dass ein Feld in jeder Sprache einen eigenen Wert haben kann. Dazu gehört auch der Fall, dass das Feld in der Originalsprache leer ist, in den Übersetzungen aber weiterhin einen Wert enthält.

Deshalb können wir das aktuelle Verhalten nicht pauschal als Defekt einstufen. Was wir allerdings sehen, ist, dass die fehlende Möglichkeit, geleerte oder entfernte Felder über den Translation Editor gezielt zu behandeln, in bestimmten Anwendungsfällen problematisch ist und in WPML adressiert werden sollte.

Für den Fall des Löschens von Produktfeldern gibt es möglicherweise einen Workaround. Das ist aber **keine offizielle Lösung**, sondern lediglich ein technischer Vorschlag. Bitte testen Sie das daher unbedingt zuerst in einer Staging- oder Testumgebung, bevor Sie es irgendwo produktiv einsetzen.

In WCML werden bereits verwaiste Felder in Übersetzungen gelöscht, also Felder, die in der Originalsprache nicht mehr existieren — für Produkte und Produktvarianten, wenn diese Felder auf **„Kopieren“** gesetzt sind. Dieses Verhalten lässt sich möglicherweise erweitern, indem Sie in folgendem Dateiabschnitt eine Anpassung vornehmen:

`woocommerce-multilingual/classes/Synchronization/Component/SynchronizerForMeta.php`

Methode: `deleteOrphanedFields`
ab Zeile 232

Bitte ersetzen Sie:

if ( WPML_COPY_CUSTOM_FIELD !== $settingsFactory->post_meta_setting( $metaKey )->status() ) {
	continue;
}

durch:

$fieldStatus = $settingsFactory->post_meta_setting( $metaKey )->status();
if ( WPML_COPY_CUSTOM_FIELD !== $fieldStatus && WPML_TRANSLATE_CUSTOM_FIELD !== $fieldStatus ) {
	continue;
}

Damit würde die Logik auch auf Felder mit Status **„Übersetzen“** angewendet. Noch einmal wichtig: Das ist derzeit kein offiziell freigegebener Patch, sondern nur ein möglicher Ansatz, der vor einer produktiven Nutzung sorgfältig getestet werden muss.

Für geleerte Felder kann ich Ihnen im Moment leider keinen entsprechenden Workaround anbieten, da dieser Fall komplexer ist.

Sobald ich hierzu ein belastbares Update habe, melde ich mich wieder direkt im Ticket.

Viele Grüße
Lucas