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.
Diese lassen sich über die Schaltfläche „Ansicht anpassen“ oben rechts aktivieren. Sie können dann mit Name und Wert befüllt werden.
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.
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).
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.
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“.
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)