Wordpress
Kati Pierson
Sonntag, den 30. April 2017 um 17:35 Uhr

WordPress: Advanced Custom Fields (ACF) via PHP & JSON erstellen

Advanced Custom Fields (ACF) ist ein geniales Plugin zum Erstellen von Custom Fields in Wordpress. Es bietet viele Möglichkeiten und ist auch in Timber integriert. Doch wie integriert man es am Besten?

Advanced Custom Fields (ACF) bieten viele Features für Custom Fields in WordPress. Zum einen können die Felder gut in Backend angelegt werden. Sie können gruppiert und positioniert werden, Gegliedert in Reitern und es sind wiederholbare Feldgruppen möglich. Als Programmierer spart man sich die Zeit für die Funktionalitäten im Backend und auch im Frontend nimmt einem das Plugin ACF besonders mit Timber viel Arbeit ab.

ACF (Advanced Custom Fields) verwenden

ACF (Advanced Custom Fields) können wie schon erwähnt im Backend angelegt werden. Der Nachteil davon ist jedoch, dass die Tabelle „posts“ in der Datenbank und die dazugehörige Tabelle „post_meta“ sichtbar gefüllt werden. Ich persönlich möchte dort keine zusätzlichen Einträge haben.

Doch ACF beitet die Möglichkeit JSON-Dateien zu speichern und PHP-Codes aus den Platzhaltern erzeugen zu lassen. Die JSON-Dateien können sogar automatisch eingelesen werden. Bei beiden Varianten werden keine Einträge in der Tabelle „posts“ angelegt. Eigentlich sind diese PHP-Codes oder JSON-Codes auch simpel zu schreiben. Es ist eben nur Schreibarbeit.

Will man sich diese Schreibarbeit ersparen, dann legt man diese Felder im Backend einmal an. Nutzt die Exportfunktion und lässt diese Dateien wieder einlesen. Bevor wir uns an die manuelle Erstellung machen, schauen wir uns die Einbindung an.

ACF (Advanced Custom Fields) mittels PHP einbinden

Entweder man legt ein Plugin an und schreibt dort die Feldgruppen- und Felddefinitionen hin oder man nutzt dafür die Datei „functions.php“. An dieser Stelle sei angemerkt, dass ein eigenes Plugin aus programmiertechnische Sicht, der richtige Weg ist. Besonders, wenn es sich um mehr als eine Feldgruppe (also eine Menge Quelltext) handelt.

ACF stellt zum Anlegen von Feldgruppen die Funktion „acf_add_local_field_group“ zur Verfügung. Möchte man nicht die Felder innerhalb der Feldgruppe anlegen, dann gibt es hier noch die Funktion „acf_add_local_field“. Zur Verknüpfung mit einer Feldgruppe muss hier nur beim Key ‚parent‘ als Value den Key „key“ der Feldgruppe angeben.

ACF (Advanced Custom Fields) mittels JSON einbinden

Schöner als mit PHP geht es mit JSON-Files. Zum Einen können diese JSON-Dateien in einem Verzeichnis in einem Plugin oder Theme gesammelt werden und mit der ACF-Features „Local JSON“ und „Synchronized JSON“ werden diese sogar automatisch eingelesen und aktualisiert. Ein kleiner Funktionsaufruf genügt:

add_filter('acf/settings/load_json', 'my_acf_json_load_point');
 
function my_acf_json_load_point( $path ) {
    // Pfad zu den JSON-Dateien - Stylesheet-Directory des Themes in diesem Fall
    $path = get_stylesheet_directory() . '/my-custom-folder';
        
    // return
    return $path;
}

add_filter('acf/settings/save_json', 'my_acf_json_save_point');
 
function my_acf_json_save_point( $path ) {
    // Pfad zu den JSON-Dateien - Stylesheet-Directory des Themes in diesem Fall
    $path = get_stylesheet_directory() . '/my-custom-folder';
        
    // return
    return $path;
}