[Gelöst] ACF-Felder in WooCommerce: Übersetzungseinstellungen werden zurückgesetzt & doppelte Felder im Tra...
Dieses Thema ist gelöst. Hier finden Sie eine Beschreibung des Problems und der Lösung.
Problem: Sie haben ACF-Felder auf Ihren WooCommerce-Produktseiten, die Sie teilweise kopieren und teilweise übersetzen möchten. Nach dem Anwenden der Einstellungen und Aktualisieren des Produkts werden die Übersetzungseinstellungen zurückgesetzt auf 'Don't translate'. Zudem erscheinen die ACF-Felder doppelt im Classic Translator, wobei nur die unteren Felder übernommen werden. Solution: Das Problem tritt auf, weil die ACF-Felder über PHP mit
acf_add_local_field_group()
definiert wurden und im Array
'wpml_cf_preferences' => 0
übergeben wird, was 'Ignore' bedeutet. Dies führt dazu, dass die gesamte Feldgruppe, einschließlich der WPML-Übersetzungseinstellungen, bei jedem Seitenaufruf aus dem Code neu geladen wird. Daher wird jede manuelle Änderung der Übersetzungseinstellung im WPML-Backend beim nächsten Laden oder Speichern basierend auf der Konfiguration im PHP-Code überschrieben. Um dieses Problem zu beheben, sollten Sie die
Falls diese Lösung veraltet ist oder nicht auf Ihr Problem zutrifft, empfehlen wir Ihnen, ein neues Support-Ticket zu eröffnen. Wir empfehlen auch, die Seite mit bekannten Problemen (https://wpml.org/known-issues/) zu überprüfen, die Version der dauerhaften Lösung zu verifizieren und zu bestätigen, dass Sie die neuesten Versionen von Themes und Plugins installiert haben.
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.
Hintergrund des Themas:
Ich habe ACF-Felder auf unseren WooCommerce-Produktseiten. Ich möchte, dass diese Felder teilweise kopiert und teilweise übersetzt werden. Ich klicke auf 'Apply', und es funktioniert zunächst. Die Einstellungen gehen jedoch nach dem Aktualisieren des Produkts zurück auf 'Don't translate'.
Die Symptome:
Die Übersetzungseinstellungen für ACF-Felder werden nach dem Produktupdate zurückgesetzt. Außerdem erscheinen ACF-Felder doppelt, wobei nur die unteren im Translator übernommen werden.
Fragen:
Warum werden die Übersetzungseinstellungen für ACF-Felder nach dem Produktupdate zurückgesetzt?
Warum erscheinen ACF-Felder doppelt im Classic Translator und nur die unteren werden übernommen?
vielen Dank für die Rückmeldung.
Ich habe das soeben probiert und die Felder über WPML > Settings noch mal so eingestellt: die Icons auf "Copy", die Descriptions auf "Translate". Wenn ich dann die Produktseite neu lade, ist es auch so auf der Produkteansicht übernommen und wird dort genauso angezeigt. Aber sobald ich das Produkt aktualisiere, springt es nach wie vor zurück auf "Don't translate".
Danke für die Info. Haben Sie ggf. eine Staging-Umgebung, wo ich dies isoliert ohne andere Plugins testen kann?
Dazu bräuchte ich bitte temporären Zugriff (WP-Admin und FTP) auf Ihre Seite, vorzugsweise zu einer Test/Staging Seite, an der das Problem nach Möglichkeit repliziert wurde.
Ihre nächste Antwort ist als „Privat“ markiert, dies bedeutet nur Sie und ich haben Zugriff darauf.
❌ Bitte sichern Sie Ihre Datenbank und Website davor ❌
✙ Ich würde außerdem Ihre Erlaubnis benötigen, um Plugins und das Theme zu deaktivieren und erneut zu aktivieren sowie Konfigurationen auf der Seite zu ändern. Dies ist auch der Grund, warum das Backup wirklich wichtig ist.
lt. Debug Info war bei der Live-Seite das WP_MEMORY_LIMIT auf 40MB zu gering eingestellt. Auf der Kopie ist dies ebenso im roten Bereich, da das "M" für "MB" in den Konstanten fehlt.
Hi Marcel,
vielen Dank für die Rückmeldung.
Ich hatte etwas Probleme, genau zu finden, warum der REST-API-Endpunkt als nicht offen galt. Jetzt sollte aber alles behoben sein – WPML zeigt den REST-API-Endpunkt als offen an und die Memory-Limits sind jetzt auch erhöht. Beide meine Fehler bleiben aber komischerweise weiterhin bestehen, sowohl auf der Staging- als auch auf der Produktionseite.
danke für den Zugang. Ich habe zur Isolierung das Theme deaktiviert. Mir ist jedoch aufgefallen, das gar keine Feldgruppen unter versteckter Link definiert sind. Woher kommen die aktuellen Einträge unter versteckter Link?
Da ich ebenso das Theme deaktiviert habe, kann die Field Group ebenso nicht als json oder PHP geladen werden. Haben Sie hier Anpassungen vorgenommen? Wenn somit die Felder nicht aktiv sind, würde es ebenso erklären, warum die Umstellung der Translation Präferenz keine Funktion hat und sich dies auf "Don't Translate" zurücksetzt.
Hi Marcel,
vielen Dank für die Rückmeldung.
Die Felder werden über das Theme geladen oder der Code dazu befindet sich im Theme. Das wurde noch nicht in ein Child Theme ausgegliedert, steht aber noch an. Ich habe das Theme wieder aktiviert und die ACF-Felder erscheinen wieder auf der Produktseite.
danke für die Info. Also wurde lt. Ihrem Code acf_add_local_field_group() dafür verwendet, keine Datei über den acf-json Folder. Dort wird im array immer 'wpml_cf_preferences' => 0, übergeben was "Ignore" bedeutet.
Wenn Felder auf diese Weise über PHP definiert werden, wird die gesamte Feldgruppe – einschließlich der WPML-Übersetzungseinstellungen – bei jedem Seitenaufruf aus dem Code neu geladen. Das bedeutet: Selbst wenn Sie im WPML-Backend die Übersetzungseinstellung manuell ändern (z. B. von „Nicht übersetzen“ auf „Übersetzen“), wird diese Änderung beim nächsten Laden oder Speichern wieder überschrieben – basierend auf der Konfiguration im PHP-Code.
Mit 'wpml_cf_preferences' => 0 geben Sie WPML explizit vor, dass das Feld nicht übersetzt werden soll. Eine manuelle Änderung im Backend hat daher keine Wirkung.
Wir konnten das Problem jetzt beheben, allerdings sind immer noch die Felder gedoppelt im Editor. Hast du dazu noch eine Idee, wie wir das wegbekommen?
Bitte prüfen Sie auf einer Staging-Seite, ob die Felder ebenfalls doppelt in der Original-Sprache erscheinen, wenn WPML deaktiviert ist. Ich vermute, dass die Felder in der Post-ID jeweils doppelt gespeichert sind und das Problem daher nicht mit WPML zusammenhängt. Dann müsste das Fields aus der DB bereinigt werden.