Tech Talk – „Advanced Custom Fields“ Plugin

Bild-Tech-Talk2jpg-scaled

Bereits seit langer Zeit setzen wir bei unseren WordPress-Installationen auf das populäre Plugin «Advanced Custom Fields» (nachfolgend ACF). Dieser Beitrag zeigt, wie wir unsere Webseiten basierend auf dem Gutenberg-Editor mit Hilfe von ACF 5.9 (voraussichtlicher Erscheinungstermin August 2020) um viele nützliche Funktionen erweitern.

Seit einigen Monaten arbeiten wir nun an einem neuen Kernsystem unserer WordPress-Installationen, welches einerseits aus technischer Sicht (fast) unbegrenzte Möglichkeiten bietet und andererseits unseren Kunden sehr viel mehr Freiheiten bei der Gestaltung der einzelnen Seiten gibt.

Mit ACF 5.9 sind wir in der Lage unseren Kern so anzupassen, dass wir alle unsere Wünsche einbauen können. Dies ist auch der Grund, warum sich dieser Beitrag mit den wichtigsten neuen Features von ACF 5.9 beschäftigt.

Was ist Advanced Custom Fields und was kann es?

ACF erlaubt es Entwicklern, dass mit verhältnismässig wenig Aufwand viel mehr mit WordPress erledigt werden kann als ursprünglich vorgesehen. So können wir beispielsweise eigene Post-Typen (Custom Post Types) erstellen und diese um fast beliebige Felder erweitern. Aber ACF kann noch viel mehr: Es erlaubt uns auch, dass wir für den Gutenberg-Editor eigene Blöcke erstellen können. Mit der Version 5.9 des Plugins wird dieses Feature nun massiv ausgebaut. Dazu aber später mehr.

Was ist der Gutenberg-Editor und warum Du diesen einsetzen solltest

Mit WordPress 5.0 wurde der umstrittene Editor mit dem Namen «Gutenberg» eingesetzt. Bis zu dieser Version bestand die Inhaltsbearbeitung in WordPress lediglich aus einem WYSIWYG-Feld. Die Einführung des neuen Editors löste aber nicht nur Jubel aus – im Gegenteil: Viele Entwickler und Anwender waren mit dem neuen Editor nicht einverstanden. Inzwischen sind wir fast bei WP 5.5 (voraussichtlicher Erscheinungstermin 11. August 2020) angekommen und der Gutenberg-Editor wurde konstant weiterentwickelt. Immer mehr Plugins bieten eigene Gutenberg-Blöcke an und die Entwicklung geht ganz klar in die Richtung, dass Gutenberg ein zentrales Element in der WordPress Welt ist und bleiben soll.

ACF und Gutenberg – eine lange und beschwerliche Reise

Kurze Zeit nach der Ankündigung des Gutenberg-Editors für WordPress hat der Autor von ACF angekündigt, dass sein Plugin die Möglichkeit bieten wird Gutenberg-Blöcke direkt mit PHP zu erstellen. Für mich als PHP-Entwickler eine sehr gute Nachricht. Ein grosser Nachteil von Gutenberg aus Sicht eines PHP-Entwicklers ist nämlich, dass vertieftes Javascript Know-how (React) erforderlich ist, um erweiterte Gutenberg-Blöcke zu erstellen.

Nach einigen Monaten war es dann so weit: ACF erschien in der Version 5.8 und brachte die erwähnte Möglichkeit mit sich. Ab sofort konnten wir direkt mit ACF Gutenberg-Blöcke erstellen. Toll!
Leider war es eher eine grundsätzliche Möglichkeit als eine «alles was wir möchten»-Lösung. Die Validierung von Feldern funktionierte nur sehr begrenzt und komplexere, voneinander abhängige Blöcke, waren mit dieser Version nicht möglich.

Trotz dieser eingeschränkten Möglichkeiten war es nun aber endlich möglich, mit relativ wenig Aufwand eigene Gutenberg-Blöcke zu erstellen. Ein Code-Beispiel:

Dieses Snippet erstellt mittels der ACF Funktion «acf_register_block_type» einen neuen Block, welcher dann im Gutenberg-Editor verwendet werden kann. Speziell zu beachten sind dabei folgende Parameter:

  • post_types
    Wir können definieren, bei welchen Post Typen dieser Gutenberg-Block zum Einsatz kommen darf. So ist es beispielsweise möglich einen Block nur für «Seiten» zu erlauben, bei «Beiträgen» jedoch nicht zu ermöglichen.
  • render_callback
    Diese Funktion liefert den (generierten) HTML-Code zurück, welcher schlussendlich dargestellt wird. Im Beispiel oben würde dieser Block lediglich einen Titel «Hallo Welt» ausgeben.
  • supports
    Gutenberg-Blöcke können verschiedenste Eigenschaften haben. Mit diesen Parametern können wir definieren, welche davon unser Block ebenfalls aufweist und welche nicht. Besonders erwähnenswert ist der Parameter «multiple», welcher schlicht definiert, ob ein Block mehrmals oder nur einmal auf einer Seite vorhanden sein darf.

Basierend darauf konnten wir verschiedenste Blöcke erstellen, welche mehr oder weniger komplexe Eigenschaften haben. Natürlich immer mit den oben erwähnten Einschränkungen.

The Big Bang: ACF 5.9

Im Mai 2020 wurde vom ACF-Autor Elliot Condon angekündigt, dass ACF 5.9 demnächst erscheinen wird. Die Liste der zu erwartenden Features ist sehr lang und es gibt einige grossartige neue Funktionen/Änderungen, auf welche ich nachfolgend eingehen möchte:

1. Darstellung der ACF Feldgruppen

Die Darstellung wurde komplett überarbeitet.
Die beiden Spalten «Location» und «Local JSON» sind die vielleicht wichtigsten. Die Spalte «Location» zeigt an, unter welchen Bedingungen die Feldgruppe angezeigt wird. Die Spalte «Local JSON» zeigt an, ob eine Synchronisierung notwendig ist.

Bemerkung: «Local JSON» ist ein Feature, welches ACF anbietet um Feldgruppen in Entwicklungsprozessen durch verschiedene Umgebungen (z.B. Development, Beta, Live) synchron zu halten. Wir setzen dieses Feature bereits seit sehr langer Zeit ein.

2. Local JSON Review

Schon länger konnte man Feldgruppen synchronisieren. Jedoch war es meist ein «ich weiss was ich tue»-Moment. Ab ACF 5.9 können nun die zu erwartenden Änderungen VOR der Synchronisierung verifiziert werden. Dies gibt zusätzliche Sicherheit und vor allem auch Gewissheit bei der Entwicklung.

3. Block Editor Validation

Mit ACF 5.9 gehört nun die erwähnte Problematik mit der Validierung von ACF-Feldern der Vergangenheit an. Dies ist vor allem für die Bedienung im WordPress-Backend eine grosse Erleichterung, da wir somit steuern können welche Felder Pflichtfelder und welche Felder optional sind.

4. InnerBlocks

Ganz am Ende des Beitrages wurde dann noch ein für Entwickler sehr einschneidendes Feature angekündigt: <InnerBlocks>.

InnerBlocks-Unterstützung bietet vereinfacht gesagt die Möglichkeit, dass wir definieren können, dass innerhalb eines von uns erstellen Blocks weitere Blöcke eingefügt werden können. Noch besser: Wir können sogar steuern, welche Blöcke innerhalb erlaubt sind. Basierend auf dem oben erwähnten Beispielcode hier die Ergänzung:

Wie hier ersichtlich ist, muss lediglich eine einzige Zeile hinzugefügt werden. Falls wir jegliche Blöcke erlauben wollen, lassen wir den Parameter «allowedBlocks» komplett weg.

Dieses kleine Feature bietet die Grundlage, um komplexere Blöcke zu erstellen. Zwei Beispiele:

Beispiel Slider

Wir können einen «einfachen» Block erstellen, welcher als InnerBlock nur «Slider-Items» enthalten darf. Das bedeutet, Du fügst zuerst einen Block «Slider» ein, innerhalb dieses Blockes kannst Du dann eine beliebige Anzahl an «Slider-Items» einfügen und diese natürlich auch Deinen Wünschen entsprechend sortieren.


Beispiel Referenzen

Basierend auf dem Slider-Beispiel kannst Du aber auch eine etwas komplexere Variante erstellen. Gehen wir davon aus, dass wir zwei verschiedene Darstellungen von Referenzen haben:

  • Bild der Referenz, Datum und Ort
  • Video der Referenz, Datum und Ort

Für diesen Fall erstellen wir einen Block «Referenzen». Dieser Block darf dann sowohl «Referenzeintrag-Bild» wie auch «Referenzeintrag-Video» als Elemente enthalten. Auch hier kannst Du dann beliebig viele Einträge hinzufügen und sortieren.

Ausblick auf unser neues Basis-Theme

Mit ACF 5.9 sind wir (vorerst) am Ende einer langen Reise angekommen. Wie zu Beginn erwähnt, arbeiten wir seit einiger Zeit an unserem neuen Basis-Theme. Das Ziel ist es, eine effizientere Entwicklung mit einer breiten Unterstützung von Gutenberg. Dieses Ziel werden wir im August 2020 erreicht haben.

Unser neuer Kern basiert generell auf folgenden Technologien/Frameworks:

  • WordPress 5.5+
  • Advanced Custom Fields 5.9+
  • UiKit 3.5.x+

Ausserdem setzen wir Handlebars (.hbs) als Templatesprache ein – sowohl im PHP-Umfeld wie auch im Javascript Umfeld. Dies erlaubt es uns einerseits die Logik vom Inhalt zu trennen und Komponenten sowohl serverseitig wie auch clientseitig sinnvoll zu verarbeiten.

Das ganze System wird durch diverse Hilfsfunktionen und WordPress-Hooks/-Actions unterstützt. Aus Kundensicht können wir mit diesem neuen Kern sehr flexibel auf Änderungswünsche reagieren und aus Entwicklersicht können wir besser den je die verschiedenen Darstellungen ausprogrammieren und sehr schnell neue Features entwickeln.

Abonniere 
unseren Newsletter

Nur wertvolle Infos – kein Spam. Mit der Ameldung bestätigst Du, dass wir Dir einmal im Monat eine Zusammenfassung der neuesten Themen im Web-Bereich als E-Mail zusenden dürfen.

Mehr Artikel wie dieser

Welche WordPress Version habe ich? So findest Du es heraus!

WordPress ist das beliebteste CMS der Welt, mit welchem sich neben Blogs auch ganze Webseiten erstellen lassen. Da WordPress regelmässig und fleissig verbessert wird, kann…
Weiterlesen

WordPress 6.1 – Alle Neuerungen mit webP und dem neuen Twenty Twenty-Three Standard-Theme im Überblick

Das dritte grosse WordPress Update in diesem Jahr steht vor der Türe. Mit WordPress 6.1 kommen am 1. November 2022 wieder zahlreiche Neuerungen auf uns…
Weiterlesen

Wie wir ACF Blocks mit Handlebars Templating einsetzen

Mittels Handlebars Templating trennen wir Logik sauber vom Inhalt. Auf diese Weise können wir übersichtliche, einfache und performante Templates für WordPress Editor Blocks erstellen, welche…
Weiterlesen

iPhone Bildschirmgrössen – (k)ein Hexenwerk für Webdesigner?

iPhone-Bildschirm Messgrössen iPhone Bildschirmgrösse in Zoll (Display Size, Inches) Dies ist die Bildschirmgrösse in Zoll, gemessen von einer Ecke zur anderen. Genau so, wie auch Bildschirmgrössen von…
Christoph Ackermann
Weiterlesen

Vorstellung von WordPress 6.0 – Neue Blöcke und mehr Performance

Seit dem 24. Mai 2022 ist mit WordPress 6.0 die zweite Hauptversion in diesem Jahr veröffentlicht worden. Benannt wurde die Version nach Jazzmusiker Arturo O’Farrill.…
Weiterlesen

So kombinieren wir Nested Pages, SEO Framework & Polylang in WordPress

Bei vielen Kundenwebseiten setzen wir auf das Plugin Nested Pages, um Seitenstruktur besser sehen (und verwalten) zu können. Ohne dieses Plugin sieht die Anzeige von…
Weiterlesen

WordPress Login – so bekommst Du Zugang zu Deinem Dashboard

Gerade für WordPress Anfänger, aber auch bei fortgeschrittenen Benutzern, kann es oft schwierig sein, sich bei seinem Konto anzumelden. Im folgenden Beitrag werde ich Dir…
Weiterlesen

WordPress 6.0: Entwicklerteam gibt Zeitplan der neuen Version bekannt

Update: WordPress 6.0 wurde am 24. Mai 2022 veröffentlicht Wie Matias Ventura Ende Januar schrieb, soll WordPress 6.0 ein Abschluss der Phase 2 des Gutenberg-Projekts…
Weiterlesen

WordPress 5.9 – Was ist neu und kommt mit dem Update

Ursprünglich sollte WordPress 5.9 (Josephine) bereits am 14. Dezember 2021 veröffentlicht werden, wurde jedoch wegen offenen Problemen nach mehrfachen Verschieben nun am 25. Januar 2022…
Weiterlesen

WordPress Bilder und Medien: Alles was du wissen musst

Bilder sind ein grosser und wichtiger Bestandteil einer modernen Webseite. Sie helfen dem Besucher und Leser, Dinge zu visualisieren und lockern auch gerne lange Beiträge…
Weiterlesen

Warum unsere Kunden ihre Webseite kaputt layouten können

Einleitung / Basics Bereits seit einiger Zeit haben wir unseren neuen cubetech Core im Einsatz. Intern nennen wir das Ding liebevoll „gutenbase“ – eine Mischung…
Weiterlesen

Wie du deine WordPress Medienbibliothek aufräumst

Wer WordPress für seinen Blog oder seine Firmenwebseite schon länger nutzt, hat sicher schon einiges an Dateien in die Mediathek hochgeladen. WordPress erstellt beim Hochladen…
Weiterlesen