Mit Advanced Custom Fields können wir benutzerdefinierte Felder erstellen und innerhalb von WordPress anzeigen lassen. Die Felder werden dabei in sogenannten Feldgruppen zusammengefasst und gespeichert. Eine Feldgruppe können wir dann verschiedenen Zielorten zuweisen und bspw. nur im Editor für Beiträge oder auch auf Taxonomie-Seiten anzeigen lassen, um bestimmte Einstellungen in den Feldoptionen vornehmen zu können.
Grundsätzlich lassen sich ACF Felder und Feldgruppen über 3 verschiedene Wege in WordPress einbinden und für die Anpassung von Themes oder Plugins nutzen:
Wie wir nun wissen, sollten ACF Feldgruppen nicht direkt aus der Datenbank geladen werden um die Performance von WordPress zu verbessern. Stattdessen können wir die Feldgruppen über eine PHP exportierte Datei oder lokale JSON-Dateien einbetten und abrufen. Der folgende Filter acf/settings/save_json
(?) zeigt dir, wie du das Zielverzeichnis für gespeicherte ACF-Feldgruppen im JSON-Format beeinflussen und ändern kannst:
Unter Verwendung des oberen Filters, geben wir an dass alle JSON-Dateien im Unterordner /acf-json/ des WordPress Themes abgespeichert werden sollen. Verwenden wir stattdessen ein Child-Theme, werden dort alle Feldgruppen in den Unterordner mit dem Namen /acf-json/ abgelegt. Der Ordername /acf-json/
kann natürlich auch ganz individuell umbenannt werden.
Ein weiterer Schritt besteht darin, dass wir alle ACF Feldgruppen aus unserem JSON-Verzeichnis einbetten um die Performance nachhaltig zu verbessern. Nachdem wir den Zielort für die gespeicherten JSON-Dateien bestimmt haben, müssen wir dem Advanced Custom Fields Plugin nun mitteilen, von welchem Verzeichnis aus die lokalen JSON-Feldgruppen geladen werden sollen. Dies können wir mit Hilfe des Filters acf/settings/load_json
(?) erreichen:
Mit diesem Filter können wir nun auf unsere lokalen ACF JSON-Dateien verweisen und legen fest, dass diese aus dem Theme Verzeichnis /acf-json/
, bzw. aus dem Child-Theme Verzeichnis eingebettet und geladen werden sollen.
Wenn wir die lokalen JSON Feldgruppen stattdessen von einem Plugin einbetten müssen, verwenden wir z.B. die WordPress-Funktion plugin_dir_path( __FILE__ )
(?) um auf das Verzeichnis unseres Plugins zu verweisen:
Möglicherweise möchten wir die ACF Feldgruppen aus lokalen JSON-Dateien einbinden und laden, welche in verschiedenen Verzeichnissen liegen. Dazu müssen wir den Filter acf/settings/load_json
um weitere Ladepunkte erweitern:
Über diese Variante werden unsere Feldgruppen von lokalen JSON-Dateien gleichzeitig von drei verschiedenen Verzeichnissen eingebunden und geladen.
Wie der Inhalt einer solchen ACF JSON-Datei aussieht, um Feldgruppen lokal aus deinem Verzeichnis zu laden, siehst du im folgenden Code-Schnipsel:
Neben der Variante die ACF Feldgruppen aus den lokalen JSON-Dateien zu laden, können wir stattdessen alle Feldgruppen über eine PHP-Datei einbinden, welche alle exportierten Felder enthält. Dazu müssen wir zunächst im ACF Plugin unter „Individuelle Felder > Werkzeuge“ alle Feldgruppen in der Liste markieren, welche wir exportieren möchten. Anschließend klicken wir auf den Button „PHP erstellen„. Als Ausgabe erhalten wir alle Feldgruppen im PHP-Format, welche wir z.B. in der acf-field-groups.php
Datei speichern und folgendermaßen in ein Theme oder Plugin einbinden können:
In diesem Fall werden Feldgruppen nun direkt aus der PHP-Datei geladen und kostspielige Datenbankabfragen eingespart. Der Inhalt solch einer PHP-Datei würde dann so ähnlich wie das folgende Beispiel aussehen:
Nun weißt du alles darüber wie das Plugin Advanced Custom Fields deine benutzerdefinierten Felder und Feldgruppen in WordPress einbindet und lädt. Als wichtigste Erkenntnis haben wir gelernt, warum Felder nicht durch die Datenbank abgerufen werden sollten. Und warum es ratsam ist, alle ACF Felder stattdessen über JSON- oder PHP-Dateien einzubinden.