Mit dem Advanced Custom Fields Plugin WordPress als „richtiges“ CMS nutzen

17 Juli 2014 · Kategorie: Wordpress + CMS · 8 Kommentare

WordPress ist ein richtiges Content Management System. Wie jedes andere System auch mit dem man Inhalte managed eben.
Aber WordPress wurde primär dazu geschaffen als Blogplattform zu fungieren und eben nicht dafür komplexe einzelne Seiten mit verschiedensten Inhaltsbereichen von unterschiedlichen Personen bearbeiten zu lassen.

Eine Seite bei WordPress besteht aus dem Titel und dem Inhalt. Optional noch aus einem Bild und einem Auszugstext.

Möchte man eine Seite erstellen die beispielsweise aus drei unterschiedlichen Texten besteht hat man schnell ein Problem. Insbesondere wenn diese Texte an drei komplett unterschiedlichen Stellen im Layout erscheinen sollen.

Klar, man kann einfach das HTML Gerüst samt Inhalt in den Editor schmeißen.

Das führt aber spätestens dann zu Problemen wenn die Seite wieder und wieder von unterschiedlichen Personen bearbeitet werden soll. Wird ein HTML Tag ausversehen beschädigt ist schnell das gesamte Layout zerschossen. Eine saubere Trennung zwischen Layout und Inhalt ist so nicht möglich.

Eine weitere Möglichkeit wäre es die Texte direkt in das PHP Template der Seite einzubauen. Damit verwehrt man aber den Content – Lieferanten den Zugang zur schnellen und einfachen Bearbeitung von eben diesem. Nicht gerade der Sinn eines CMS.

Eine schon interessantere Möglichkeit wäre es da die “Benutzerdefinierten Felder” dafür einzuspannen. WordPress gibt einem die Möglichkeit bei jedem Artikel und jeder Seite “Custom Fields” (<- oder eben “Benutzerdefinierte Felder” auf deutsch…)anzulegen.

Hier wird ein Schlüssel und ein dazu passender Wert eingegeben. Z.B. der Schlüssel “Haarfarbe” und der Wert “blond”.
Ich kann jetzt diesen Schlüssel oder seinen Wert, oder auch beides, auslesen und in mein Theme einbauen.

Ich könnte also einen “Text A”, “Text B” und “Text C” Schlüssel anlegen und den dazu erfassten Wert an drei unterschiedlichen Stellen im WordPress Theme bzw. innerhalb eines bestimmten Templates ausgeben.

Aber: Diese benutzerdefinierten Felder wurden primär dazu geschaffen kurze und einfache, tabellarische Werte aufzunehmen. Soll ein komplexer Text mit Bildern und Absätzen erfasst werden stößt diese WordPress Funktion schnell an seine Grenzen.

Die Lösung: Das „Advanced Custom Fields“ Plugin für WordPress

advanced custom fields plugin für wordpressUnd hier kommt das “Advanced Custom Fields” Plugin (kurz: ACF) von Elliot Condon (@elliotcondon) ins Spiel.

Dieses nutzt die benutzerdefinierten Felder von WordPress, gibt dem Administrator aber die Möglichkeit hierfür individuelle Eingabeformulare zu entwerfen und diese den Content Schreiberlingen anstelle des normalen WordPress Editors zur Verfügung zu stellen.
Z.B: drei WYSIWYG Editor Fenster für Text A, Text B und Text C. Oder Radiobuttons, Checkboxen, Bilder, Zugriff auf den Media Manager, Google Maps, Videos, einfache Textfelder und vieles mehr.

Wann und ob diese individuellen Eingabeformulare angezeigt werden und statt oder neben dem normalen WordPress Editor kann sehr differenziert festgelegt werden.

Ich kann beispielsweise das Formular “Landingpage” anlegen und festlegen das dieses nur angezeigt wird, wenn eine Seite mit dem Template “Landingpage” angelegt werden soll.

Die so eingesammelten Eingaben kann ich dann individuell und an beliebiger Stelle wieder ausgeben. Z.B. in einem Template für eine Landingpage.
Hierfür kann ich entweder die native WordPress Funktion:

get_post_meta()

nutzen. Oder die von ACF zur Verfügung gestellte Funktion:

get_field()

Ich würde zur zweiten Funktion raten, da es bei der Ausgabe von get_post_meta() zu Darstellungs- bzw. Formatierungsfehlern kommen kann und nicht alle Optionen zur Verfügung stehen.

Legt man beispielsweise ein Eingabefeld mit dem Namen „custom_titel“ an und baut anschließen diesen Code Schnipsel:
<?php the_field('custom_title'); ?>

in das eigene WordPress Template ein, wird der dort hinterlegt Wert genau an dieser Stelle angezeigt.

Fazit

Mit ACF können innerhalb einer WordPress Instanz komplexe Inhalte eingegeben und ausgegeben werden, ohne das Inhalt und Code durcheinandergewürfelt werden. Entwickler behalten die volle Hoheit über den Code und Redakteure über ihren Inhalt.
Für WordPress Seiten mit komplexeren Layouts und mehreren Inhaltsbereichen ist ACF ein muss.
Das Plugin selber ist kostenlos. In einer kostenpflichtigen Pro Version werden nützliche Erweiterungen (wie z.B. eine “Gallery”) mitgeliefert.

Bisherige Kommentare (Selber ein Kommentar hinterlassen)

  • Sasa sagt:

    Hey, ich hätte mal eine Frage zu ACF und zwar möchte ich gerne Kategorien anlegen (Alphabet) und diese dann als Menü ausgeben welche dann bei Klick auf A dann alle Inhalte mit Kategorie A ausgegeben werden. Aber die Verknüpfung funktioniert nicht. Mit welchem Feld Typ wird das korrekt angelegt?
    Besten Dank im Voraus.
    Grüße
    Sasa

  • Mich sagt:

    Hallo Holger,

    ein sehr interessanter Beitrag. Ich beschäftige mich auch gerade mit ACF und da hilft das schon weiter.
    Ich hätte aber noch eine Frage dazu. Vielleicht kannst du ja helfen.
    Ich möchte in meinem Theme auf den Kategorieseiten ein zweites Beschreibungsfeld hinzufügen. Wie gehe ich dabei am besten vor? Bzw. wo muss ich was anlegen. Habe dazu bislang noch nichts finden können.

    Beste Grüße
    Micha

  • Holger sagt:

    Man kann das mit konditionalen Abfragen steuern. Z.B:
    < ?php if(get_field('field_name')) { echo '

    ' . get_field('field_name') . '';
    }
    ?>

    Was soviel bedeutet „Wenn das Feld mit dem Feldnamne „field_name“ etwas enthält dann hol dir den hinterlegten Wert und gib ihn in einem

    Tag aus“

  • Jörg Maire sagt:

    Hallo Holger,
    ein schöner Beitrag. Danke!
    Ich habe mir das gerade einmal installiert und eingerichtet.
    Ich bin nun aber kein Programmierer und habe eine kurze Frage dazu.
    Wenn ich in die Artikelseite einsetzen möchte und auch irgendwie geschafft hat, erscheinen dann leere Felder, wenn nichts eingetragen ist? Oder scheinen die ab sofort auf jeder Artikelseite?

    Gruß Jörg

  • Thomas sagt:

    Danke für den super Beitrag, vernünftig die mächtigen Custom Fields erklärt :)

  • Holger sagt:

    Ist nicht verschwunden, war nur noch nicht freigeschaltet;-)

  • hans sagt:

    mein kommentar ist irgendwie verschwunden :( okay nochmal in kurz: gäbe es ACF nicht wäre ich schon vor jahren zu drupal abgewandert ;)

  • […] verschiedenen Erweiterungen, Browser Plugins und Tools herumzuexperimentieren. Mit WordPress, der ACF Erweiterung und einem meiner eigenen Basis Themes hab ich in relativ kurzer Zeit (ein Abend) einen kleinen […]


Kommentar schreiben (* Pflichtfelder)