Navigation überspringen

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
- 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 -
- 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 -

Unterstützt die Zeitzone: Europe/Madrid (GMT+01:00)

Schlagwörter: 

Dieses Thema enthält 0 Antworten, hat 0 Stimmen.

Zuletzt aktualisiert von Marcel Vor 10 Stunden, 6 Minuten.

Assistiert von: Marcel.

Verfasser Beiträge
Dezember 2, 2024 unter 5:03 pm #16467683

uweW-7

Background of the issue:
Ich setze eine neue Website als WordPress Multisite für eine Firma mit weltweiten Standorten auf. Jeder Standort hat eine eigene Seite im Netzwerk, die in mehreren Sprachen verfügbar ist. Wir nutzen WordPress 6.7.1 mit ACF Pro 6.3.11 und WPML 4.6.14 mit der ACF ML Extension (Version 2.1.4.2). Die ACF Felder wurden in der Hauptseite generiert, als PHP exportiert und im Theme eingebunden, um sie nicht für jede Standortseite neu anlegen zu müssen.

Symptoms:
Wenn die zu übersetzenden Felder in einer Gruppe oder einem Repeater-Element sind, erscheinen sie im ATE nur, wenn die Übersetzungseinstellungen auf 'Experte' umgestellt werden. Und auch dann erhalten wir für alle Felder ausschließlich Strings zurück, wenn wir sie mit get_field() ausgeben wollen, was für Gruppen oder Repeater nicht funktioniert. Bei Bildern erhalten wir nur einen String mit der Bild-ID, auch wenn diese so konfiguriert sind, dass sie ein Array zurückgeben sollen.

Questions:
Wie erhalten wir für alle Feldgruppen zuverlässig die Übersetzung und nicht nur einen nutzlosen String?
Warum erhalten wir bei Bildern mit der Einstellung, dass Arrays zurückgeliefert werden sollen, nur einen String mit der Bild-ID in der Übersetzung?

Dezember 2, 2024 unter 5:39 pm #16467815

Lucas Vidal de Andrade
Supporter

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

Zeitzone: America/Sao_Paulo (GMT-03:00)

Guten Tag,

ich habe eine Testumgebung erstellt, die Sie über den folgenden Link erreichen können:
versteckter Link

WPML und ACFML sind bereits installiert. Die Standard-Sprache ist Englisch, und Deutsch ist als Sekundärsprache eingestellt. Bitte reproduzieren Sie das Problem in dieser Testumgebung, damit wir analysieren können, was passiert. Es reicht aus, nur das Minimum einzurichten, das erforderlich ist, um den Fehler zu reproduzieren. Sie müssen sich nicht um den gesamten Inhalt Ihrer Originalseite kümmern.

Bitte informieren Sie mich, sobald Sie das Problem reproduziert haben.

Dezember 4, 2024 unter 9:10 am #16475276

uweW-7

Hallo Lucas,

die Sandbox ist jetzt von uns angepasst. Folgendes haben wir gemacht:

- ACF installiert, um ACF ML überhaupt nutzen zu können
- ein Demo-Theme installiert, welches nur die absolute Basis enthält um den Fehler reproduzieren zu können
- für die "Sample Page" (versteckter Link) eine Übersetzung auf Deutsch hinzugefügt

Wenn man auf dieser Seite nun auf die deutsche Sprachversion wechselt, sieht man, dass die h1 nicht richtig angezeigt wird, obwohl der Text mit dem ATE übersetzt wurde. Die Übersetzung verschwindet einfach.

Die ACF Felder werden mittels PHP-Funktion erzeugt (siehe functions.php -> eingebettete Datei acf-sync.php) und nicht direkt über das Plugin. Wenn die Felder direkt über das Plugin angelegt werden, werden sie auch in der Übersetzung richtig angezeigt. Das ist in unserem Fall allerdings leider mit sehr großem Aufwand verbunden, da wir dieselben Felder für ca. 20 Websites benötigen und alle Änderungen sofort verfügbar sein sollen.

Dezember 4, 2024 unter 5:12 pm #16478216

Lucas Vidal de Andrade
Supporter

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

Zeitzone: America/Sao_Paulo (GMT-03:00)

Guten Tag,

vielen Dank, dass Sie die Sandbox eingerichtet haben. Noch eine Bitte: Könnten Sie so genau und knapp wie möglich beschreiben, was das erwartete Verhalten ist und was stattdessen passiert?

Ich habe unser Gespräch erneut durchgelesen, aber da ich das an unsere Entwickler weiterleiten werde, wäre es am besten, wenn Sie das Problem zusammenfassen und beschreiben. Vielen Dank im Voraus.

Dezember 4, 2024 unter 5:50 pm #16478279

uweW-7

Hallo,

auf der Testseite versteckter Link ist in der englischen Version in der h1 der Text zu lesen, der per ACF für diesen Bereich definiert wurde und mittels `get_field()` an der Stelle ausgegeben wird.

In der deutschen Version ist an derselben Stelle nur der Fallback-Text zu lesen, da die Übersetzung nicht geladen wird. Statt des Arrays mit beiden Texten, da beide in einer Gruppe sind, wird ein leerer String zurückgeliefert.

Außerdem ist bei der direkten Ansicht der Übersetzung im Gutenberg-Editor kein Originaltext zu sehen, der normalerweise direkt unter dem Feld angezeigt wird.

Gleiches passiert übrigens auch bei Bildern, wenn der Rückgabewert auf Array gestellt ist.

Dezember 5, 2024 unter 1:13 pm #16481563

Lucas Vidal de Andrade
Supporter

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

Zeitzone: America/Sao_Paulo (GMT-03:00)

Vielen Dank, dass Sie die Details mitgeteilt haben. Ich stehe in Kontakt mit unseren Entwicklern und werde Ihnen eine Rückmeldung geben, sobald ich eine Antwort erhalte. Bis bald.

Dezember 9, 2024 unter 2:10 pm #16493534

Lucas Vidal de Andrade
Supporter

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

Zeitzone: America/Sao_Paulo (GMT-03:00)

Guten Tag,

ich habe eine Rückmeldung von unserem Entwicklungsteam erhalten. Hier ist, was sie mitgeteilt haben:

„In derselben Sandbox habe ich eine Feldgruppe über die normale Benutzeroberfläche eingerichtet und Felder hinzugefügt, darunter ein Bildfeld mit der Option, die Daten als Array zurückzugeben.

Ich habe Beispieldaten zum Beitrag 'Hello World' hinzugefügt und diesen übersetzt.

Dann habe ich eine vereinfachte `single.php`-Vorlage erstellt, die einfach die zurückgegebenen Daten der Feldgruppe ausgibt.

Beim Aufrufen von 'Hello World' im Frontend und seiner deutschen Übersetzung werden die zurückgegebenen Daten im Array-Format mit allen Details in beiden Sprachen deutlich angezeigt. Das bedeutet, dass alles wie erwartet mit dieser Feldgruppe funktioniert.“

Bitte überprüfen Sie diese Konfigurationen und vergleichen Sie sie mit den Einstellungen Ihrer Feldgruppe, die per PHP registriert wurde. Lassen Sie mich wissen, was Sie herausfinden.

Dezember 9, 2024 unter 4:45 pm #16494299

uweW-7

Hallo,

wie oben bereits geschrieben, funktioniert die Übersetzung, wenn die Felder direkt über das Plugin angelegt werden. Was nicht funktioniert, ist die Übersetzung, wenn die Felder per PHP erzeugt werden.

Bitte testen Sie die von uns beschriebene Vorgehensweise, wo die Felder über PHP erzeugt werden, da der Fehler nur dann auftritt.

Dezember 11, 2024 unter 11:53 am #16503205

Lucas Vidal de Andrade
Supporter

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

Zeitzone: America/Sao_Paulo (GMT-03:00)

Hey there,

wir untersuchen Ihr Anliegen weiterhin. Ich melde mich, sobald ich Neuigkeiten von unseren Entwicklern erhalte.

Dezember 11, 2024 unter 6:25 pm #16505118

Lucas Vidal de Andrade
Supporter

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

Zeitzone: America/Sao_Paulo (GMT-03:00)

Guten Tag,

ich habe Rückmeldung von unseren Entwicklern erhalten.

Folgendes haben sie gemacht: Sie haben die funktionierende Feldgruppe „Traditional Group“ und ihre Felder über ACF > Werkzeuge in PHP exportiert. Danach haben sie den PHP-Code kopiert, die bestehende Feldgruppe über die UI gelöscht und den PHP-Code in die Datei functions.php des Themes eingefügt, um die Feldgruppe zu registrieren.

Wenn Sie den Beitrag Hello World im Frontend aufrufen, sehen Sie, dass die Felder als Arrays zurückgegeben werden. Wenn Sie zur deutschen Version wechseln, bleibt dies ebenfalls der Fall. Alles funktioniert korrekt, unabhängig davon, ob die Felder über die UI oder mittels PHP-Code registriert wurden.

Ich empfehle Ihnen, den Sandbox-Code mit Ihrem eigenen Code zu vergleichen. Wenn das nicht funktioniert, schlagen wir vor, die Felder über die Benutzeroberfläche zu erstellen.

Dezember 13, 2024 unter 4:59 pm #16512305

uweW-7

Hallo,

diese Lösung funktioniert ausschließlich, wenn es die Felder zu einem früheren Zeitpunkt in derselben Installation schonmal gab. Wenn auf diesem Wege komplett neue Felder angelegt werden, führt dies wieder zu oben beschriebenem Fehler.

Das Projekt, in dem der Fehler auftritt, ist eine WordPress-Multisite mit später bis zu 20 einzelnen Seiten. Die Felder direkt per ACF anzulegen wäre also extrem zeitaufwändig und fehleranfällig.

Wir haben soeben auch eine Rückmeldung vom ACF-Support erhalten, die wir allerdings erst am Montag werden testen können. Der ACF-Support bittet uns außerdem, mit Ihnen zu klären, wie seitens WPML die Speicherung der Feld-Daten erfolgt, da der Fehler sehr wahrscheinlich mit den ACF Field bzw. Group Keys entsteht. Diese sind bei Anlage per PHP immer identisch, da sie in der PHP-Funktion enthalten sind. Gibt es hierfür in WPML eine Option diese zu aktualisieren oder zwischen Übersetzungen zu synchronisieren?

Dezember 18, 2024 unter 5:11 pm #16527055

Marcel
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch )

Zeitzone: Europe/Madrid (GMT+01:00)

Hallo,

mein Kollege Lucas ist momentan nicht verfügbar, daher übernehme ich gerne und beantworte Ihre Anfrage in der Zwischenzeit.

Unser Team hat das Problem getestet und folgende Rückmeldung für Sie:

Es spricht nichts dagegen, Feldgruppen per PHP zu registrieren und den Inhalt zu übersetzen, solange dies korrekt umgesetzt wird. Wir haben die Feldgruppe zunächst importiert, sodass sie in der ACF-Benutzeroberfläche bearbeitet werden konnte. Dazu haben wir den ursprünglichen Kundencode deaktiviert und stattdessen eine angepasste Variante verwendet, die in einem WPCode-Snippet sichtbar ist (falls Sie Interesse daran haben).

Anschließend haben wir geprüft, ob diese Variante korrekt funktioniert, indem wir eine kleine Änderung an der Beispielseite vorgenommen und sie neu übersetzt haben – was einwandfrei funktionierte. Daraufhin haben wir das PHP-Export-Tool von ACF verwendet, um den Code zu generieren, der die Feldgruppe registriert. Wir haben die Feldgruppe aus der Benutzeroberfläche gelöscht, den generierten Code anstelle des ursprünglichen Kundencodes in das Theme integriert und erneut getestet, indem wir die Beispielseite bearbeitet und neu übersetzt haben. Auch in diesem Fall funktionierte alles wie gewünscht.

Haben Sie dazu noch weitere Fragen?

Viele Grüße
Marcel

Dezember 20, 2024 unter 4:07 pm #16534916

uweW-7

Hallo Marcel,

wenn ich das richtig verstehe, müssen für diesen Weg die Felder immer zunächst in ACF angelegt werden, egal ob per JSON-Import oder direktem Anlegen. Ist das richtig?

In dem betreffenden Projekt bei uns, handelt es sich um eine WordPress Multisite. Die ACF-Felder werden in der Mainsite angelegt, dort über Werkzeuge -> Export als PHP exportiert und der darüber erstellte Code 1:1 im Theme eingebunden.
Wenn wir die Felder bei jeder Seite im Multisite Netzwerk trotzdem erstmal importieren müssen, damit alles funktioniert, bringt die Nutzung der Feldgenerierung per PHP unserer Ansicht nach keinen Vorteil mehr. Wir hätten dann ja trotzdem den wesentlich aufwändigeren und vor allem fehleranfälligeren Part des manuellen Imports pro Seite im Netzwerk.
Da wir uns hier jetzt aber ja schon eine Weile im Kreis drehen, befürchte ich so langsam, dass das wohl unsere einzige Option ist, die zuverlässig funktioniert, wenn auch wesentlich aufwändiger.

Um das genauer überprüfen zu können, hätten wir allerdings auch Interesse an dem beschriebenen WPCode-Snippet. Wo können wir das einsehen?

Viele Grüße
Mareike

Dezember 20, 2024 unter 4:20 pm #16534929

Marcel
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch )

Zeitzone: Europe/Madrid (GMT+01:00)

Hallo Mareike,

Sie können dies mit dem Plugin "Code Snippets" direkt in der verwendeten Sandbox prüfen: versteckter Link">Link zur Sandbox. Bitte loggen Sie sich zuerst ein, damit der folgende Link korrekt geöffnet wird:

versteckter Link">Zum Snippet.

Die Felder müssen nicht zwingend über die ACF-Oberfläche angelegt werden. Sie können die Translation Präferenz auch direkt über den Key wpml_cf_preferences mit dem Wert 1 (übersetzbar) setzen.

Weitere Informationen dazu finden Sie hier:
WPML-Dokumentation: Translation Präferenz für ACF-Felder.

Viele Grüße
Marcel