So lässt sich die „Synchronise repeater and flexible sub-fields positions in post translations“ Einstellung von WPML & ACFML deaktivieren

Das Problem

Falls du WordPress zusammen mit Advanced Custom Fields (ACF) einsetzt und eine mehrsprachige Seite mit WPML und dem Advanced Custom Fields Multilingual (ACFML) Plugin betreibst, hast du wahrscheinlich schon mal die folgende Option unter deinen Wiederholung-Feldern (ACF Repeater Field) gesehen:

Option „synchronise repeater and flexible sub-fields positions in post translations
(record drag-and-drop moves and do the same moves in other translations)“

Auf den ersten Blick sieht dies vielleicht nach einer guten Idee aus und die Option ist auch standardmässig aktiviert. Für Webseiten, welche aber ein Wiederholungs- bzw. Flexibler-Inhalt-Feld (Repater / Flexible Content field) als Haupt-Inhaltselement verwenden und die Seiten unterschiedliche Inhalte in den verschiedenen Sprachen haben können, wird dies ein unschönes Durcheinander verursachen. Ich verwende für das Entwickeln von massgeschneiderten Webseiten gerne das Flynt theme, welches ein solches Setup verwendet.

Die Lösung: die „Synchronise translations“ Option standardmässig deaktivieren

Leider habe ich keinen dokumentierten Weg gefunden um diese Option programmatisch zu auszuschalten. Beim Durchsehen des Codes des ACFML plugins field mir aber die folgende Lösung in zwei Schritten auf:

1. Füge folgende Zeilen in deine wp-config.php Datei ein:

/* Die Option von ACFML zum Synchronisieren Repeater und Flexible Content Field Positionen standardmässig ausschalten */
define( 'ACFML_REPEATER_SYNC_DEFAULT', false );

2. Höchstwahrscheinlich: gespeicherte Werte dieser Einstellung zurücksetzen

Wähle in deiner Datenbank die Tabelle „wp_options“ und schaue nach einer Zeile mit „option_name“ = acfml_synchronise_repeater_fields. Dieser Eintrag wird (falls vorhanden) Post-IDs und den Boolean-Wert (Aktiv: 1 – Inaktiv: 0) der „Synchronise translations“ Option enthalten.

Benenne den acfml_synchronise_repeater_fields Wert in der „value_name“ Spalte um zu acfml_synchronise_repeater_fields_backup. Damit wird die Option für alle bestehenden Posts wieder auf den Standard (= ausgeschaltet) zurückgesetzt. Sobald du die Einstellung wieder auf einem Post aktivierst, wird der Eintrag in der Datenbank neu angelegt.

💡 Falls du eine neue Seite hast oder WPML erst gerade aktivierst, kann es sein, dass der Datenbank-Eintrag noch gar nicht erstellt wurde. Dann brauchst du hier nichts zu unternehmen.

Rückmeldungen werden geschätzt

Falls diese Lösung dir geholfen hat das gleiche Problem zu lösen wäre es grossartig wenn du mich dies in den Kommentaren unten wissen lassen könntest.

Seitenspezifische Body Class mit Nuxt.js

Etwas, was ich an WordPress immer praktisch fand, ist dass es von Haus aus relativ ausgiebig seitespezifische CSS-Klassen im <body> Tag  hinzufügt. Dies vereinfacht dann schnell und einfach CSS Styling für eine spezifische Seite vorzunehmen.

Auf einer WordPress Seite sieht dies etwas so aus:

<body class="post-template-default single single-post postid-585 single-format-standard logged-in large">

Auf einer Nuxt.js Seite hatte ich die gleiche Herausforderung, dass ich basierend auf der jeweiligen Seite gewisse CSS Anpassungen machen wollte. Die einfachste Variante aus meiner Seite ist es dafür eben die jeweilige Seite über eine spezifische body class ansprechen zu können.

Mit dem folgenden Code fügt man eine auf der $route basierende body class hinzu:

So sieht danach der Body Tag aus:

<body class="page-beispielseite">