Kommentare 30

Jede Menge Möglichkeiten mit benutzerdefinierten Feldern in WordPress

Benutzerdefinierte Felder (Custom Fields) sind hilfreich, um zusätzliche Inhalte auf WordPress-Seiten und -Artikeln anzulegen und zu verwalten. Ganz besonders praktisch sind benutzerdefinierte Felder auch, wenn du WordPress als Content Managemant System einsetzen möchtest. So können individuelle Inhalte später von deinen Kunden selbstständig im Admin-Bereich hinzugefügt und angepasst werden. Da die Verwendung von benutzerdefinierten Feldern in der Theorie ein bisschen schwierig zu beschreiben ist, habe ich neben einer kleinen Einführung jede Menge nützliche Beispiele für den Einsatz von Custom Fields zusammengestellt.

1. Eine kleine Einführung

Ein benutzerdefiniertes Feld kannst du im WordPress Admin-Bereich in einem Artikel oder auf einer Seite anlegen. Dazu gibst du einfach einen Namen (z.B. featured-text) und als Wert den entsprechenden Text ein.

WordPress benutzerdefinierte Felder
Ein benutzerdefiniertes Feld für einen einleitenden Text.

Das benutzerdefinierte Feld »featured-text« kannst du z.B. auf Seiten mit einem Intro-Text oberhalb des eigentlichen Seiteninhalts einsetzten (z.B. auf einer Service-Seite oder einer Über uns-Seite).

Um den Wert eines benutzerdefinierten Feldes angezeigt zu bekommen, musst du jetzt noch die WordPress-Funktion »get_post_meta« in die PHP-Datei des Seiten-Templates innerhalb des Loops einfügen. Der allgemeine Code dafür sieht so aus.

<?php get_post_meta($post_id, '$key', $single); ?>

»Post_id« steht dabei für die ID-Nummer des Artikels, »key« steht für den Namen des Custom Fields und »single« (true oder false) bestimmt, ob der Wert als string (für einen einzelnen Wert) oder als array (bei mehreren Werten für ein benutzerdefiniertes Feld) ausgegeben wird.

Um also beispielsweise den Wert des benutzerdefinierten Feldes »featured-text« in die Template PHP-Datei (z.B. service-template.php) zu integrieren, fügst du folgenden Code ein.

<p class="featured-text"><?php echo get_post_meta($post->ID, 'featured-text', true); ?></p>

2. Benutzerdefinierte Felder im Einsatz

Mit benutzerdefinierten Feldern kann man jede Menge tolle WordPress-Features praktisch umsetzen. Einige hilfreiche Möglichkeiten habe ich hier zusammen gestellt.

2.1. Mehrere Werte eines Custom Fields ausgeben

Du kannst einem Custom Field auch mehrere Werte zuweisen. Z.B. könntest du in deinem Portfolio auf jeder Projekt-Seite Feedback-Zitate deiner Kunden anzeigen. Bei einer größeren Firma könnte es durchaus sein, dass du mehrere Zitate zu einem Projekt angeben möchtest.

Um das zu erreichen erstellt du mehrer benutzerdefinierte Felder z.B. mit dem Namen »testimonial«, und fügst dann die Zitate jeweils als Wert ein. In deinem Portfolio PHP-Template gibst du dann innerhalb des Loops folgenden Code an.

<?php
$client_testimonials = get_post_meta($post->ID, "testimonial", false);
if ($client_testimonials[0]=="") { ?>
<!-- If there are no custom fields, show nothing -->
<?php } else { ?>
<div class="testimonials">
	<h3>Die Meinung des Kunden:</h3>
	<?php foreach($client_testimonials as $client_testimonials) {
	echo '<p>'.$client_testimonials.'</p>';
	} ?>
</div>
<?php } ?>

(Code-Quelle: Webdesigner Notebook)

2.2. Nur Artikel mit einem bestimmten benutzerdefinierten Feld anzeigen

Um nur Artikel mit einem bestimmten Custom Field anzuzeigen, kannst du die WordPress-Funktion »query_posts« nutzen. So kannst du deine Artikel auf praktische Art sortieren.

Der folgende Code gibt z.B. alle Artikel mit dem Namen »my_day« aus, deren Wert kleiner oder gleich groß als 20 ist. Diese werden dann absteigend, also vom höchsten zum niedrigsten Wert sortiert.

<?php query_posts('meta_key=my_day&meta_compare=<=&meta_value=20&orderby=meta_value&order=DESC'); ?>

(Code-Quelle: WP Engineer)

Weitere Info zu den Parametern, nach denen du die Ausgabe deiner Artikel oder Seiten bestimmen kannst, findest du im WordPress Codex.

2.3. Benutzerdefinierte Felder auch außerhalb des Loops anzeigen

Wie bereits oben erwähnt funktionieren Custom Fields nur innerhalb des WordPress-Loops. Mit Hilfe des folgenden Code-Schnipsels hast du die Möglichkeit, den Wert deiner benutzerdefinierten Felder auch außerhalb des Loops aufzurufen.

<?php
global $wp_query;
$postid = $wp_query->post->ID;
echo get_post_meta($postid, 'your-customfield', true);
?>

(Code-Quelle: WPShout)

2.4. Individuelles CSS-Styling für einen Artikel

Auch die CSS-Styles für individuell gestaltete Artikel kannst du mit Hilfe von Custom Fields ausgeben. So kannst du besondere Artikel oder Artikel-Serien mit CSS-Styling hervorheben.

Um diese Funktion nutzen zu können, fügst du als erstes folgenden Code-Schnipsel innerhalb deiner functions.php Datei ein.

// Custom CSS-Styles for Posts
function shiftnews_post_class($classes) {
   global $post;
   $sn_post_class_array = array (
      get_the_author_meta('display_name'),
      get_post_meta($post->ID, 'post-class', true)
   );
   $classes[] = implode(" ", $sn_post_class_array);
   return $classes;
}

Dann fügst du in deiner single.php Datei folgenden Code in einen Div mit der ID content-wrap ein (dieser sollte den Inhalt deines Artikels umschließen).

<?php post_class(shiftnews_post_class()); ?>

Deinem benutzerdefiniertes Feld gibst du jetzt den Namen »post-class« und fügst als Wert deine für den Artikel benötigten CSS-Klassen ein. In der HTML-Ansicht des Artikels kannst du die entsprechenden CSS-Klassen angeben.

(Code-Quelle: Smashing Magazine)

3. Das Custom Field Template Plugin

Das Plugin »Custom Field Template« ist sehr nützlich, um benutzerdefinierte Felder für ein Kundenprojekt zu optimieren. Mit Hilfe des Plugins kannst du individuelle Custom Fields mit Eingabefeldern, Radio-Buttons, Checkboxes und etlichen weiteren Optionen erstellen, um deinen Kunden das Ausfüllen der Felder so leicht wie möglich zu machen.

WordPress benutzerdefinierte Felder
So legst du ein neues Custom Field Template in den Plugin-Einstellungen an.

WordPress benutzerdefinierte Felder
Und schon erscheint das neue Eingabe-Feld auf den angegeben Seiten oder Artikeln.

4. Custom Fields und Custom Post Types

Seit WordPress 3.0 gibt es die hilfreiche Option neben Seiten und Artikeln weitere, individuelle Arten von Artikeln anzulegen. Hast du z.B. einen Reiseblog, auf dem du ab und zu Hotel-Bewertungen beschreibst, kannst du dir neben deinen Seiten und Artikeln den Custom Post Type »Hotel Bewertung« anlegen.

Auch in deinen Custom Post Types sind benutzerdefinierte Felder ein sehr hilfreiches Mittel, um zusätzliche Informationen zu speichern. Du könntest z.B. benutzerdefinierte Felder anlegen, um eine zusammenfassende Beurteilung des Hotel unter jede Hotel-Bewertung in einer Tabelle auszugeben.

Eine spannende und ausführliche Beschreibung zum Thema Custom Post Types findest du auf dem Blog von Justin Tadlock.

5. Noch mehr Lesestoff

Die Möglichkeiten, was sich mit benutzerdefinierten Feldern alles in WordPress umsetzen lässt, ist noch lange nicht zu Ende. Und mit ein paar kreativen Ideen kannst du dir auch selbst hilfreiche Lösungen für deine eigenen WordPress-Seiten einfallen lassen. Folgende Blogs und Artikel bieten außerdem weiteren Lesestoff.

Kennst du weitere tolle Tipps, Tricks oder Tutorials zum Thema benutzerdefinierte Felder in WordPress? Wie verwendest du selbst Custom Fields, und was sind deine Erfahrungen? Über deine Tipps und dein Feedback freue ich mich sehr!

30 Kommentare

  1. Schöner Artikel, danke. Was mich interessiert, bekomme ich ein Custom Field irgendwie in den Feed und wenn ja, wie?

    Ich gebe derzeit z.B. die Quelle von Beiträgen per Custom Field an, so erscheint unter dem Post automatisch ein Quelle Link. Ist aber noch optimierungsbedürftig, würde gerne nur die URL bis zur TLD auslesen, evtl. finde ich da noch nen Trick.

  2. Das ist cool. Ich hab mich schon immer gefragt was man mit diesen Feldern so anstellen kann, damit wäre diese Frage dann auch endlich mal gelohnt und ich kann überlegen, ob ich die Felder nicht irgendwo zur Anwendung bringen kann :)

    LG
    Timo

    • Hallo Timo,

      vielen Dank für deinen Kommentar. Es freut mich, dass du den Beitrag hilfreich findest :-)

      Ja, das stimmt, diese praktischen Felder übersieht man leicht ;-) Dir fällt bestimmt eine tolle Möglichkeit ein, wie du die Custom Fields nutzen kannst, um Elemente deines Blogs später einfacher anpassen zu können :-)

      Viel Spaß und viele Grüße,
      Ellen

  3. Kleiner Wunsch am Rand (off topic): ich wünschte mir mehr Links von deutschen Sites auf andere deutsche Sites, denn vieles gibt es dort ebenso und nicht selten früher; wer der Erste war ist natürlich nicht nachzuweisen bzw. schwer und erwarte ich nicht. Ich würde nur die dt. Blogosphäre aktiver sehen und aktuell mangelt es an Linkkraft. Warum in die Ferne schweifen, denn das Gute liegt so nah; insofern vermutlich vorrangig Leser mit Kenntnis der deutschen Sprache den Beitrag nutzen und so auch die Links.

    • Hallo Frank,

      vielen Dank für deinen Kommentar :-) Ja, da hast du auf alle Fälle Recht. In einem deutschsprachigen Artikel sollte man natürlich schon versuchen, vor allem deutsche Lesetipps / Links auf weitere Artikel zum Thema etc. zu finden. Das finde ich eine wichtige und gute Anregung von dir :-)

      Gerade beim Thema WordPress, wo sich schnell auch mal Dinge ändern, versuche ich aber auch immer möglichst aktuelle Beiträge (unabhängig von der Sprache) zu finden. Mit grundlegenden Englisch-Kenntnissen und Hilfe, z.B. vom Google-Übersetzer kommt man da denke ich auch schon recht weit. Und es ist ja auch wichtig, über die neusten internationalen Trends informiert zu sein.

      Das sich Blogs mehr verlinken und gegenseitig unterstützen sollten, finde ich auch ganz wichtig. Gemeinsam macht es ja auch mehr Spaß und man kann Themen untereinander ergänzen und so von einander lernen :-)

      @Alle :
      An dieser Stelle kann ich vielleicht auch noch auf meinen Artikel “Zeit zu Lernen: Praktische Tipps zur Weiterbildung als Webdesigner” hinweisen. Über weitere Blogs-, Buch-, oder Workshop-Tipps von Euch würde ich mich riesig freuen :-)

      Viele Grüße,
      Ellen

  4. Liebe Ellen, vielen Dank für die vielen guten Tipps. In einem neuen Blog-Projekt verwende ich benutzerdefinierte Felder, finde die Handhabung aber ein bisschen mühsam. Das Einrichten ist zwar recht einfach, aber irgendwie sind mir die Eingabefelder zu klein. Das Custom Field Template Plugin ist vielleicht genau die Lösung, nach der ich gesucht habe. Nächste Woche werde ich das mal ausprobieren. Liebe Grüsse :)

    • Hallo Barbara,

      vielen Dank für deinen Kommentar und deine Erfahrungen zum Thema Custom Fields :-)

      Ja, das Plugin ist eine tolle Möglichkeit, um die Eingabefelder zu optimieren. Vor allen auch bei Kundenprojekten ist diese Möglichkeit sehr benutzerfreundlich. Allerdings versuche ich auch immer, mit möglichst wenig Plugins auszukommen. Während ich ein Feld bearbeite, erweitere ich mir das Eingabefeld immer, so wird es ein bisschen übersichtlicher. Später kann man die Felder dann ja auch verbergen :-)

      Viel Spaß beim Ausprobieren und viele Grüße,
      Ellen

  5. Danke fürs verlinken :)

    Custom Fields machten WordPress für mich erst zur Allzweckwaffe. Damit lässt sich im Grunde alles anstellen. Bei Make Better Apps setze ich sehr viele Custom Fields ein. Auch auf http://www.hreisen.de haben wir sehr viele Custom Fields eingesetzt und das ganze ist dadurch sehr schön aufbohrbar.

    Schöner Artikel!

    • Hallo David,

      vielen Dank für deinen Feedback und deine Einschätzung :-) Ja, ich bin definitiv auch großer Fan der Felder, und wenn man sich erst einmal ein wenig mit den Funktionen auseinander gesetzt hat, fallen einem jede Menge Einsatzmöglichkeiten ein :-)

      Oh ja, auf der Reise-Seite und auf deiner Make Better Apps-Seite gibt es bestimmt jede Menge Möglichkeiten für Custom Fields. Das sind tolle Beispiele, danke dafür :-)

      Viele Grüße,
      Ellen

  6. Hallo Ellen,

    trotz Deiner sicherlich sehr guten Beispiele erschließt sich mir der Nutzen dieser benutzerdefinierten Felder noch nicht.

    Muss ich dann jedes Mal an dem PHP Code rumschrauben, wenn ich ein ben. Feld einsetzen will? Bin Nichtprogrammierer!

    Internette Grüße
    Horst

    • Hallo Horst,

      vielen Dank für dein Feedback :-)

      Ein benutzerdefiniertes Feld ist ganz besonders dann nützlich, wenn du bestimmte Meta-Daten (der gleichen Kategorie, aber mit anderen Werten) auf verschiedenen Artikeln oder Seiten nutzen möchtest. ein Beispiel könnten hier z.B. die Hotelbewertungen sein.

      Ein anderer, praktischer Effekt ist die Möglichkeit, so Code zusätzlicher Seitenelemente im Admin-Bereich zugänglich machen zu können. Dadurch können auch nicht WordPress-Profis später im Admin-Bereich der Seiten und Artikel Elemente (z.B. Texte, URLs) leicht ändern.

      Ich hoffe ich konnte dir die Funktion der Custom Fields ein wenig besser beschreiben. Ich weiss, dass es in der Theorie etwas schwer zu verstehen ist. Am besten du probierst einfach einmal ein paar Funktionen aus, dann wird es sicher leichter :-)

      Viel Spaß mit den Custom Fields und viele Grüße,
      Ellen

  7. Chris

    Hallo Ellen,

    wunderbar finde ich die Custom Fields für mein Kunden CMS. Danke für die klare und einfache Übersicht, welche ein schnelles Umsetzen ermöglichten.

    Gruß, Chris

  8. Andreas

    Servus Ellen,

    vielen Dank für die tolle Info.

    Ich möchte folgendes tun:

    Ich möchte Custom Fields als Tabelle anzeigen.
    Ich habe also mehrere Posts, die mit Custom Fields ausgerüstet sind.
    Z.B.
    Auto-Marke,
    Hubraum
    Bewertung
    usw.

    Diese Posts sind in sich mit einem Bild und einem Text ausgestattet.
    Wie bekomme ich die Custom Fields der verschiedneen Posts dann in eine Tabelle, so daß nur Auszüge der Posts in der Tabelle stehen, nämlich die Auszüge der Custom Fields der Posts.

    Würde mich freuen, wenn du da was hättest.

    LG, Andreas

  9. Hallo Ellen

    Super Artikel, gerne würde ich wissen ob es möglich ist die Felder im Zusammenhang mit den Custom post types einzusetzen. Zb für einen Artikel zu einem Film bei dem ich später mit einem Stichwort im Benutzerdefinierten Feld weitere Artikel zu dem Schauspieler einbauen kann

  10. josien

    Hello Ellen,
    I am using your theme Ari. It is wonderful. The problem a heve is when i try to activite the plugin ‘advanced custom fields’, the WP systeem gives this message: HTTP-fout 500 (Internal Server Error)
    Can you help me?

  11. Martin

    Ahoj,

    gibt es auch die Möglichkeit die Artikelausgabe in einer Tabelle so zu gestalten, dass es einen meta key mit dem Namen “Zeit” gibt. Dort trage ich dann zu jedem Artikel die Zeit ein. Zum Beispiel 20 Uhr, 17 Uhr usw.

    Jetzt habe ich 3 Artikel mit der Zeit 20 Uhr und will die in einer Tabelle anzeigen. Leider zeigt es aber auch die 17 Uhr Artikel mit an da der gleiche meta key verwendet wird. Nur mit einer anderen Zeit (also Wert). Ich will aber nur die 20 Uhr-Artikel anzeigen.

    Gruß

    Martin

  12. Hallo,
    wiedermal ein Hammer Artikel und genau das was ich gesucht habe… ich bin gerade dabei mein zweites WP-Addon zu stricken.. und zwar eine Artikel-Detailsuche, bei der die Benutzerdefinierten Felder als Referenz dienen…
    mal sehen was das wird :)
    Danke für den schönen Artikel

  13. Super beschrieben und leicht nachvollziehbar.
    Dennoch habe ich ein Problem damit :(

    Eines meiner Lieblingsthemes ist Graphene.
    ‘Dummerweise’ wird dieses Theme regelmäßig ‘up-gedated’.
    Wenn ich es richtig verstanden habe ist dann der Code wieder weg ?? :(

    Oder gibt es da eine Lösung?

    Vielen Dank
    Manfred

  14. Hallo,
    ich möchte in einem Mitgliederbereich meines Blog ein “Gespräch” mit dem User simulieren. Dort muss er verschiedene Texteingaben machen, auf die ich später bei anderen Seiten wieder zugreifen möchte und in den Text einbauen. Möglichst einfach mit Shortcodes.
    Ich hatte an Custom Fields für die Realisierung gedacht, aber was ich hier lese, ist es wohl der falsche Einsatz.
    Kennt Ihr eine Lösung, mit der angemeldete User Daten hinterlassen können?
    Schöne Grüße, David

Schreibe eine Antwort