WordPress: Advanced Custom Fields und WPML

Das Plugin „Advanced Custom Fields“ bietet die Möglichkeiten, bestimmten Seiten-Typen (z.B. Page, Post oder auch Custom) benutzerdefinierte Felder hinzuzufügen. Soll die Webseite jetzt mit Hilfe von WPML mehrsprachig gemacht werden, stößt man auf eine Überraschung: Beim Anlegen der Seiten für eine andere Sprache, werden die Custom-Fields nicht mit dupliziert. Das würde bedeuten, dass der gesamte Inhalt dieser Felder auf die Seite der anderen Sprache manuell übertragen werden muss, da dieser sonst nicht Bestandteil der neuen Seite ist und im Frontend nicht angezeigt wird (auch wenn dieser nicht übersetzt werden muss).

Es entspricht dem standardmäßigen Verhalten von WordPress, dass die Custom-Fields beim Duplizieren nicht kopiert werden. Um die Custom-Fields beim Duplizieren der Seite ebenfalls mit zu übernehmen, sind folgende Einstellungen notwendig:

1. Benutzerdefinierte Felder übersetzbar machen

Zunächst müssen in den Einstellungen von WPML (Im Menü: WPML – Übersetzungsmanagement – Einrichtung des mehrsprachigen Inhalts) die benutzerdefinierten Felder ausgewählt werden, welche übersetzt werden sollen. Diese Einstellungen befinden sich unter „Übersetzung benutzerdef. Felder“ und dort muss für jedes Feld die Option „Übersetzen“ ausgewählt werden. Die Anzahl der Felder kann, je nach Seitenumfang, sehr groß sein. Damit nicht jeder Radio-Button manuell angeklickt werden muss, kann in der Browser-Konsole folgender JavaScript ausgeführt werden:

$('#icl_cf_translation td').each(function() {if($(this).attr('title') === 'Übersetzen'){$(this).find('input[type=radio]').prop('checked',true);}});

2. Übersetzen der ACF-Gruppen

Die benutzerdefinierten Felder (ACF) werden beim Duplizieren übernommen, jedoch beim Bearbeiten der übersetzten Seite nicht angezeigt. Damit diese auch im Backend sichtbar werden, muss in den Einstellungen von WPML (Im Menü: WPML – Übersetzungsmanagement – Einrichtung des mehrsprachigen Inhalts – Benutzerdefinierte Beiträge) der Beitragstyp „Felder-Gruppen“ auf „Übersetzen“ gestellt werden. Jetzt ist es möglich, die Felder-Gruppen unter „Eigene Felder“ (Custom Fields) zu bearbeiten und für jede Gruppe eine Übersetzung in der entsprechenden Sprache anzulegen. Beinhalten die benutzerdefinierten Felder (ACF) keinen vordefinierten Inhalt, reicht hier das einfache Duplizieren der Felder-Gruppen aus. Nachdem alle Gruppen erstellt wurden, werden diese auf den Seiten der neuen Sprache angezeigt.

3. Seiten duplizieren

Beim Duplizieren der Seiten ist es wichtig, den Inhalt nicht über den Button „Inhalte von Deutsch kopieren“ zu übernehmen. Die Seite muss in der Bearbeiten-Ansicht der deutschen Seite über die rechte Meta-Box Sprache dupliziert werden, damit alle Inhalte übernommen werden (Checkbox anklicken und Duplizieren wählen).

PSR-1: Basic Coding Standard

Nein, in diesem Beitrag geht es nicht um die PSR-1 aus PIXEL GUN 3D, hier geht es um Coding Standards und zwar den der PHP Framework Interop Group, wie man standardkonformen PHP-Code schreibt. Von dieser Gruppe wurden mehrere Spezifikationen zu PHP verfasst. Die PSR-1, um die es hier maßgeblich geht, beschäftigt sich mit allgemeinen Vorgaben zu Inhalt/Struktur einer PHP-Datei und Namensgebungen.

Die PSR-1 (PHP Standard Recommendation 1) befasst sich, wie der Name „Basic Coding Standard“ schon sagt, mit dem allgemeinen, grundlegendem Programmierstil. Also zum Beispiel den Tags, der Namensgebung und dem zu verwendenden Zeichensatz.

Allgemeines


PHP-Tags

Damit der Code standardkonform ist, muss der PHP-Tag ausgeschrieben werden <?php ?>. Alternativ kann man die Kurzform des echo-Tags benutzen <?= ?>, andere Varianten sollen nicht genutzt werden.

Zeichensatz

Es soll nur UTF-8 ohne BOM verwendet werden.

Inhalt

Eine PHP-Datei darf nicht gleichzeitig Deklarationen und sogenannte „side-effects“ enthalten.

Zu den Side-Effects gehören unter anderem:

  • Ausgaben
  • Auswerfen von Ausnahmen oder Fehlermeldungen
  • Externe Verbindungen herstellen
  • Explizites Aufrufen von „require“ und „include“
  • Änderungen von statischen oder globalen Variablen
  • Ein- oder Auslesen einer Datei



Namespaces und Klassen

Namespaces müssen einer der beiden „autoloading“ Richtlinien (PSR-0 oder PSR-4) entsprechen. Diese enthalten unter anderem Spezifikationen zu der Vergabe von vollqualifizierten Klassennamen. Ziel ist, dass der Code bei Bedarf einheitlich und automatisch nachgeladen werden kann.

Namensgebung

  • Klassennamen müssen nach der StudlyCaps Schreibweise vergeben werden
  • Konstantennamen müssen komplett groß geschrieben werden. Einzelne Wörter werden dabei mit Unterstrichen voneinander getrennt
  • Methodennamen müssen nach der camelCase() Schreibweise vergeben werden
  • Attributnamen müssen nach keiner bestimmten Konvention geschrieben werden. Es sollte allerdings darauf geachtet werden, dass innerhalb eines Bereichs eine einheitliche Namensgebung verwendet wird.



Weitere Informationen gibt es auf der Seite der PHP Framework
Interop Group: www.php-fig.org