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.

Wie lassen sich ACF Feldgruppen in ein WordPress Theme oder Plugin einbinden?

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:

  • Datenbank: Wenn wir Felder über die Administration von ACF hinzufügen, werden diese zunächst direkt aus der Datenbank geladen. Das ist bei einer kleinen Anzahl von Feldern auch kein Problem. Nutzen wir jedoch viele Felder und Feldgruppen, dann wirkt sich das negativ auf die Performance (Ladezeit) von WordPress aus. Das liegt daran, dass bei jedem Aufruf von Felddaten die Datenbank abgerufen wird. Ab einer bestimmten Anzahl von Datenbankabrufen ist das sehr kostspielig und erhöht somit die Ladezeit deiner WordPress Webseite.
  • PHP exportierte Datei: Eine weitere Möglichkeit besteht darin, alle ACF Feldgruppen über die Administration als PHP-Datei zu exportieren und die Datei anschließend in das WordPress Theme oder Plugin einzubinden und abzurufen. In diesem Fall werden alle Informationen der Feldgruppen direkt über PHP geladen und viele Datenbankabrufe somit reduziert. Das verbessert die Performance und die Ladezeit deiner WordPress Webseite.
  • JSON Datei: Ähnlich wie die Feldgruppen aus einer exportierten PHP Datei abzurufen, können wir die ACF Feldgruppen auch direkt aus JSON Dateien einbetten und abrufen. Mit jedem Speichern einer Feldgruppe, wird gleichzeitig auch eine JSON Datei angelegt und im Ordner „acf-json“ gespeichert. Diese Dateien enthalten ebenfalls alle nötigen Informationen zu unseren ACF Feldgruppen. Dadurch ergibt sich eine weitere Möglichkeit, alle Feldgruppen direkt über die Einbettung von lokalen JSON-Datei abzurufen und Datenbankabfragen einzusparen.

Das Zielverzeichnis für gespeicherte ACF JSON-Dateien ändern

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.

Lokale ACF JSON-Dateien von einem WordPress Theme oder Plugin einbetten und laden

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.

JSON-Datei stattdessen von einem Plugin aus laden

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:

ACF Feldgruppen von verschiedenen Verzeichnissen laden

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:

ACF Feldgruppen von exportierter PHP-Datei laden

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.