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.
Schlagwörter: Custom Work, Documentation request
Dieses Thema enthält 3 Antworten, hat 0 Stimmen.
Zuletzt aktualisiert von Andreas W. Vor 1 Woche.
Assistiert von: Andreas W..
Autor | Beiträge |
---|---|
Juni 17, 2025 um 7:08 am #17140807 | |
davidS-113 |
Hintergrund des Themas: Die Symptome: Fragen: |
Juni 17, 2025 um 2:20 pm #17142854 | |
Andreas W. WPML-Unterstützer seit 12/2018 Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Zeitzone: America/Lima (GMT-05:00) |
Hallo, Die Feldgruppen sollten immer auf "Nicht übersetzbar" stehen. Cas "Checkbox"-Feld sollte bei Verwendung des WPML Übersetzungseditor aus "Kopieren" stehen und bei Verwendung des WordPress-Editor auf "Einmal kopieren". Die "Choices" des Feldes sollten sich mit der WPML String-Übersetzung übersetzen lassen. Wird der Inhalt mit dem WPML Übersetzungseditor oder dem WordPress-Editor übersetzt? Hast Du bereits versucht den Cache zu leeren? Mit freundlichen Grüßen |
Juni 22, 2025 um 9:54 am #17156750 | |
davidS-113 |
Hallo Andreas, ich habe den Fehler gefunden! In meinem PHP-Template frage ich die Felder per „if/else if“ ab, um sie zu übersetzen und als Link auszugeben. Die Links (<a>) habe ich in dem folgenden Beispiel entfernt, da das hier im Forum nicht funktioniert: $services = get_field('service'); Da die ACF-Felder in der String-Übersetzung anscheinend automatisch übersetzt worden sind, greift meine Abfrage (z.B. $service == 'Haare schneiden') nicht mehr und ich müsste entweder meinen Code ($service == 'Haircut') oder die String-Übersetzung anpassen. Danke für deine Hilfe. Falls du noch eine Idee hast, wie ich das besser lösen kann, sag gerne Bescheid. Viele Grüße, |
Juni 24, 2025 um 8:44 am #17163641 | |
Andreas W. WPML-Unterstützer seit 12/2018 Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Zeitzone: America/Lima (GMT-05:00) |
Hallo David, Lösung (empfohlen): Verwende stattdessen einen Wert-Schlüssel statt der sichtbaren Labels. Beispiel: Dann kannst du im Code sicher so abfragen: foreach ( $services as $service ) { if ( $service == 'haircut' ) { echo (ICL_LANGUAGE_CODE == 'de') ? 'Haare schneiden' : 'Haircut'; } elseif ( $service == 'blowdry' ) { echo (ICL_LANGUAGE_CODE == 'de') ? 'Föhnen' : 'Blow dry'; } } Das Funktioniert auf diese Weise allerdings nur, wenn nur zwei Sprachen aktiv sind. Soll bedeuten, der Wert bleibt 'haircut' oder 'blowdry' on beiden Sprachen und die übersetzt nur das Label, das im Frontend angezeigt wird. Grundsätzlich werden diese Labels aber mit dem WPML Übersetzungseditor oder eben über WPML > String Translation übersetzt und sie sollten eigentlich nicht konditionell im PHP Code übersetzt werden. Mehr zum Thema: Du kannnst allerdings Folgendes in der wp-config.oho hinterlegen, damit die Choices bei neuen Jobs nicht mehr automatisch übersetzt werden: define( 'ACFML_EXCLUDE_FIELD_GROUP_STRINGS_IN_POST_JOBS', false ); Mehr dazu hier: --- Wenn du unbedingt bei deinem Code bleiben willst, musst du einen Weg finden, das Originale (nicht übersetzte) Feld auszulesen. Dazu könntest du z. B. temporär auf die Standardsprache umschalten, das Feld lesen, dann zurückwechseln. Das ist aber eher ein Hack und kostet Performance: $current_lang = apply_filters( 'wpml_current_language', null ); $default_lang = apply_filters( 'wpml_default_language', null ); do_action( 'wpml_switch_language', $default_lang ); $services_original = get_field('service', get_the_ID()); do_action( 'wpml_switch_language', $current_lang ); // Jetzt kannst du auf $services_original zugreifen Mit freundlichen Grüßen |