Wer häufig mit Advanced Custom Fields Pro arbeitet oder ganze Plugins und Themes entwickelt, die auf ACF basieren, wird sich irgendwann wundern, warum die WordPress Performance darunter leidet. ACF kommt mit einer gewaltigen Portion zusätzlicher Funktionen, welche dafür gedacht sind, mit einfachen PHP wahre Wunder zu bewirken. Das ist schön für den Entwickler bzw. Anwender, da er noch einfacher PHP Templates erstellen kann.

Jedoch wirkt sich diese zusätzliche Last negativ auf die WordPress Performance aus und eine Webseite wird je nach Menge der verwendeten Feldern, ersichtlich langsamer.

Was wäre eine Lösung und wie können wir ohne Verzicht auf ACF die Performance optimieren? Wir könnten das Laden des ACF Plugins im Frontend verhindern und es somit ausschließlich im WordPress Backend nutzen. Ein Teil besteht also darin, die Art und Weise zu beeinflussen wo und wann ACF geladen wird.

Der andere Teil und worum es in diesem Artikel geht, ist anstelle der ACF-Funktionen, Alternativen zu finden. Denn ohne das Laden von ACF im Frontend, werden auch alle ACF-Funktionen nicht mehr interpretiert werden können. Hier können wir glücklicherweise auf WordPress-Funktionen zurückgreifen.

ACF Felddaten in Beiträgen oder auf Seiten

Der Standard-Weg, wie wir auf ACF-Felddaten zugreifen können, ist mit der Funktion get_field() zu arbeiten. Aber wusstest du, dass es sich bei dieser Funktion nur um eine Wrapper-Funktion von ACF handelt, welche eigentlich die WordPress-Funktion get_post_meta() ansteuert?

get_post_meta() statt get_field() nutzen

Wir können also auf die Nutzung von get_field('field_name') verzichten und stattdessen get_post_meta( $post_id, $field_name, true ) nutzen. Das würde dann wie folgt aussehen:

ACF Felddaten auf Optionsseiten

ACF bietet mit get_field(‚field_name‘, ‚option‘) eine weitere Möglichkeit, Felddaten von den ACF Optionsseiten im Plugin oder Theme zu verwenden und ausgeben zulassen. Wusstest du das es sich hierbei ebenfalls um eine Wrapper-Funktion handelt, welche eigentlich die WordPress-Funktion get_option() ansteuert?

get_option() statt get_field()

Statt der Nutzung von get_field('field_name', 'option') können wir also auf get_option('options_field_name') zurückgreifen. Hierbei ist zu beachten, dass jeder Optionsfeldname den Prefix „options_“ benötigt!

ACF Repeater Felddaten

Das ACF-Repeater Feld lässt uns ein und die selbe Feldmaske unterschiedlich oft verwenden, wobei sich die Feldwerte je nach Repeater-Zeile unterscheiden können. Auch hier gibt es eine Möglichkeit auf die ACF-Funktionen have_rows() und get_sub_field() zu verzichten und stattdessen eine for() Schleife mit get_post_meta() zu kombinieren.

Für ACF-Repeater Felddaten aus Optionsseiten, gehst du wie folgt vor:

Eine weitere Möglichkeit mit ACF Repeater Felddaten zu arbeiten, ist eine eigenen Wrapper-Funktion zu erstellen, welche den Umgang in Template-Dateien erleichtert. Mehr dazu findest du hier:

ACF Flexible Content Felddaten

Das ACF Flexible Content Feld ist ein mächtiges Werkzeug welches die wiederholte Nutzung von ganzen Feld-Layouts ermöglicht. Wenn wir jedoch auch hier auf die ACF-Funktionen verzichten möchten, müssen wir statt while(), have_rows(), get_row_layout() und get_sub_field() auf eine Kombination von foreach(), switch() und get_post_meta() zurückgreifen.

ACF Felddaten in Taxonomie und Term

ACF Felder lassen sich auch auf Taxonomie-Seiten wie "Kategorien" oder "Schlagwörtern" einbinden und ausgeben. Um den Feldwert von get_field() auf einer Taxonomie / Term Seite zu erhalten, benötigen wir zusätzlich noch die Angabe von $taxonomy und $term_id. Um darauf zu verzichten, nutzen wir die WordPress-Funktion get_term_meta() unter Angabe der $term_id.

ACF Felddaten von WordPress Benutzern

Auch der Benutzerbereich in WordPress lässt sich mit ACF-Feldern erweitern. Um an die Felddaten zu gelangen müssen wir get_field() unter Angabe der Benutzer-ID / Autor-ID mit dem Prefix "user_" verwenden. Stattdessen verwenden wir nun die WordPress-Funktion get_user_meta() unter Angabe der Benutzer bzw. Autor-ID.

ACF Felddaten von WordPress Widgets

Innerhalb von WordPress Widgets lassen sich auch individuelle ACF-Felddaten mit get_field() unter Angabe der Widget-ID und dem Prefix "widget_" ausgeben. Stattdessen können wir get_option() unter der Angabe der jeweiligen Widget-ID verwenden, um auf die ACF-Funktion zu verzichten.