WordPress-Plugin: Advanced Custom Fields

Es gibt Plugins, die in den Werkzeugkasten eines jeden WordPress-Entwicklers gehören. Eins davon ist Advanced Custom Fields, dessen Funktionen wir für Sie gern näher beleuchten.

Eigene Felder

In WordPress ist es üblich, dass die Seiteninhalte über den Editor und Widgets eingegeben werden. Auch wenn durch den neuen Gutenberg-Editor viel Arbeit übernommen wird, so ist doch noch einiges an Arbeit zu tun, so dass aus der bloßen Inhaltwiedergabe ein ansprechendes Unterseiten-Layout wird. Was ist, wenn bestimmte Elemente mit Klassen und IDs ausgestattet werden sollen? Wie erklärt man das einem Kunden, für den HTML und CSS „böhmische Dörfer“ sind? Hierfür hat WordPress die „Custom Fields“ – Benutzerdefinierte Felder (Eigene Felder) eingeführt.

Abbildung 1: WordPress Ansicht anpassen (Eigene Darstellung, 2019)

Diese lassen sich über die Schaltfläche „Ansicht anpassen“ oben rechts aktivieren. Sie können dann mit Name und Wert befüllt werden.

Abbildung 2: WordPress Eigene Felder (Eigene Darstellung, 2019)

Damit dieser Wert dann auch auf der Seite angezeigt wird, muss die Template-Datei der Seite angepasst werden. Je nach Theme und Post-Type kann diese Datei variieren. Für Beiträge wäre dies die single.php. Hier muss an entsprechender Stelle folgender Code eingefügt werden:

get_post_meta($post_id, $key, $single);

Zur Erklärung:

get_post_meta() ist eine interne WordPress Funktion, welche u.a. eigene Felder zu einer bestimmten Beitrags-ID abruft.

$post_id ist die ID des Beitrags, für den das Feld gesetzt wurde.

$key ist der abzurufende Metaschlüssel, also der Name des eigenen Feldes.

$single ist ein bool-Wert (kann nur wahr oder falsch sein). Bei true wird nur der erste Wert für den angegebenen Metaschlüssel zurückgegeben.

Advanced Custom Fields

Mit Advanced Custom Fields wurden die eigenen Felder weiterentwickelt. Es gibt mehrere Feldtypen, man kann diese verschachteln oder in Schleifen verpacken, etc. Vor allem für den nicht so versierten PHP-Programmierer gibt Advanced Custom Fields die Möglichkeit, hierfür individuelle Eingabeformulare zu entwerfen und diese den Redakteuren anstelle des normalen WordPress Editors zur Verfügung zu stellen.

Das Plugin fügt nach der Installation einen Menüpunkt im WordPress-Backend namens „Eigene Felder“ hinzu. Hier kann man Feld-Gruppen erstellen.

Feldgruppen werden verwendet, um eigene Felder zu organisieren und sie an bestimmte Post-Types oder Unterseiten anzuhängen. Jede Feldgruppe enthält einen Titel, eigene Felder, Position und Einstellungen. Es macht Sinn, diese spezifisch für Seitenlayouts (Seite, Beitrag), Seiten-Templates oder einzelne Seiten/Beiträge zu erstellen. Denn in der neuen Gruppe kann eingestellt werden, wo die Felder überall im Backend angezeigt werden.

Abbildung 3: Advanced Custom Fields – Feldgruppe anlegen (Eigene Darstellung, 2019)

Titel

Jede Feldgruppe benötigt einen Titel.

Tipp: Relevante Titel wie „Homepage“ oder „Ereignis“ verwenden.

Felder

Hier kann man eine Vielzahl von eigenen Feldern erstellen und verwalten. Durch das Klicken auf die Schaltfläche „Feld hinzufügen“ wird ein neues Feld erstellt und am Ende der Liste hinzugefügt (Felder können neu angeordnet werden, indem man das Feld per Drag&Drop an die entsprechende Stelle schiebt).

Abbildung 4: Advanced Custom Fields – Felder anlegen (Eigene Darstellung, 2019)

Für jedes Feld sind die Feldbeschriftung, der Feldname und -typ erforderlich. Alle anderen Optionen sind nicht erforderlich und ändern sich je nach Feldtyp.

Die Feldbezeichnung ist bei der Eingabe von Inhalten sichtbar. Hier sollte auf eine benutzerfreundliche Feldbezeichnung geachtet werden.

Der Feldname ist die Computerversion, die kleingeschrieben sein muss und keine Leerzeichen/Sonderzeichen enthalten sollte. Dieser Name wird im Template verwendet, um den Inhalt/ die Daten abzurufen.

Wenn man mit den Mauszeiger über die graue Leiste oben im Feld fährt, werden Aktionsschaltflächen angezeigt, die denen anderer WP-Listen ähneln. Mit diesen Aktionen kann man das Feld löschen, bearbeiten (öffnen/schließen) und duplizieren.

Position

Im Feld „Position“ kann man eine Reihe von Regeln erstellen, die festlegen, wann und wo diese Felder angezeigt werden sollen.

Abbildung 5: Advanced Custom Fields – Postiotion der Feldgruppe (Eigene Darstellung, 2019)

Tipp: Regeln können zu beliebigen Kombinationen und/oder Anweisungen zusammengefasst werden.

Optionen

Für jede Feldgruppe gibt es einige einfache Optionen, mit denen man die Bearbeitungsseite im Backend anpassen kann, auf der diese Feldgruppe angezeigt wird. Wenn auf einer Seite mehrere Feldgruppen angezeigt werden, werden die Optionen der ersten Feldgruppe verwendet. Aus diesem Grund kann man eine Reihenfolge festlegen. Feldgruppen werden entsprechend ihrer Reihenfolge geladen und angezeigt, wobei 0 die erste und 99 die letzte ist.

Anzeigen auf der Seite

Um das eigene Feld anzuzeigen, fehlt nun noch der PHP-Aufruf im Template.  Alle Werte werden als Post-Meta gespeichert. Obwohl man die WordPress-Funktion get_post_meta() verwenden könnte, empfiehlt es sich, die entsprechende ACF-Funktion wie get_field () oder the_field() zu verwenden. Warum? Weil ACF den Wert abhängig vom Feldtyp formatiert und somit die Entwicklung schneller und einfacher macht!

Anzeigen eines eigenen Feldes:

the_field($selector, [$post_id], [$format_value]);

Zurückgeben des Wertes eines eigenen Feldes:

get_field($selector, [$post_id], [$format_value]);

Dabei ist $selector der Feldname, $post_id die Post-ID in der das Feld angegeben wurde (optional) und $format_value bool-Wert (kann nur wahr oder falsch sein), ob Formatierungslogik angewendet werden soll. Der Standardwert ist „true“.

Abbildung 6: Advanced Custom Fields – Beispiel für Template-Datei (Eigene Darstellung, 2019)

Shortcode

Man kann Advanced Custom Fields aber auch im Editor über Shortcodes nutzen.

Fazit

Mit Advanced Custom Fields hat man innerhalb von WordPress die Möglichkeit, komplexe Inhalte ein- und auszugegeben, ohne den Inhalt und Code durcheinanderzubringen. Entwickler behalten die volle Hoheit über den Code und Redakteure über ihren Inhalt. Das Plugin selbst ist kostenlos. In einer kostenpflichtigen Pro Version werden nützliche Erweiterungen (wie z.B. eine ‚Galerie‘ oder ‚Wiederholungsfelder‘) mitgeliefert.

Autor: Stefanie Schmidt (Leitung Webdesign, w3u.one)

Quelle: WordPress Codex „Custom Fields“ https://wordpress.org/support/article/custom-fields/ (16.07.2019)
Advanced Custom Fields Dokumentation https://www.advancedcustomfields.com/resources/ (16.07.2019)