Für Menschen · Seien Sie begeistert und Sie werden begeistern !
Das ich WordPress für ein flexible und mächtige Applikation halte, ist sicher bekannt. WordPress kann mehr als nur Weblogpublishing. In letzter Zeit kamen vermehrt Fragen bezüglich bestimmter Anwendungswünsche und ob man dafür ein Plugin kennt oder erstellen könnte.
Deshalb auch der Artikel hier. Es gibt innerhalb des Schreibens eines Beitrags/ Seite in WordPress die Möglichkeit benutzerdefinierte Felder anzulegen und mit Werten zu füllen. Mit diesen Werten und Feldern kann man arbeiten und eine Menge an Anforderungen lösen, „ohne Plugin”. Allerdings will ich eines nicht verschweigen, das einfache und unkomplizierte Auslesen eines Wertes zu einem Schlüssel funktioniert nur innerhalb des Loop. Deshalb dazu im Folgenden eine kleine, einfache Lösung zum Anpassen.

Will man innerhalb des Loop einen Schlüssel auslesen, dann genügt folgender Syntax, innerhalb des Templates. Im ersten Beispiel wird der Link zu einem Bild zum Schlüssel image_des_beitrags gespeichert und nachfolgend mit HTML ausgegeben.
<?php $image = get_post_meta($post->ID, 'image_des_beitrags', true); ?>
<a href="<?php the_permalink() ?>"><img src="<?php echo $image; ?>" alt="<?php the_title(); ?>" /></a>
Will man nicht den kompletten Link als Wert speichern, kann man das natürlich anpassen. Denkbar ist beispielsweise, wenn die Bilder immer im uploads-Ordner von WordPress gespeichert werden, dass man nur den Bildnamen speichert und den Rest immer im Quellcode des Templates hat.
<?php $image = get_post_meta($post->ID, 'image_des_beitrags', true); ?>
<a href="<?php the_permalink() ?>"><img src="<?php get_option('siteurl'); ?>wp-content/uploads/<?php echo $image; ?>" alt="<?php the_title(); ?>" /></a>
Ähnliche Anwendungen kann man natürlich auch mit einer Reihe anderer Inhalte und Anforderungen machen.
Möchte man aber an einzelne Felder außerhalb des Loop kommen, so reichen die mitgegebenen Mittel von WordPress nicht aus um ein einzelnes Feld auszulesen. Dazu empfehle ich das Ablegen eines kleinen Plugins, welches das jeweilige Feld ausliest und die Daten in einer Funktion übergibt. Die einfachste Form könnte beispielsweise wie folgt aussehen. Dieses nutze ich, um im PhotoBlogFB Theme die EXIF-Daten der Bilder auszulesen.
<?php
/*
Plugin Name: MetaKey
Plugin URI: http://bueltge.de/
Description: Benutzerdefiniertes Feld auslesen
Version: 1.0
Author: Frank Bueltge
Author URI: http://bueltge.de/
*/
// Meta-Key: image_des_beitrags
function fb_meta_image() {
global $id, $post_meta_cache;
if ( $keys = get_post_custom_keys() ) {
foreach ( $keys as $key ) {
$values = array_map('trim', get_post_custom_values($key));
$value = implode($values,', ');
if ( $key == 'image_des_beitrags' ) {
return $value;
}
}
}
}
?>
Entscheidend für die Funktion ist die Variable $key, die den Namen des Schlüssels übergeben bekommt und den Wert dann durch die Funktion übergibt.
$image = fb_meta_image();
if ($image != '') {
. . .
}
Der Wert wird im obigen Beispiel an die Variable $image übergeben und die prüfe ich dann, ob sie ungleich leer (ungleich !=) ist. Wenn sie nicht leer ist, dann soll weiteres damit gemacht werden.
Diesen Code legt man sich als php-Datei im Plugin-Verzeichnis von WordPress ab und aktiviert es. Danach steht die Funktion bereit und kann, wie im obigen kleinen Beispiel, genutzt werden.
Sollten keine Kenntnisse im Bereich Plugin vorhanden sein, so habe ich auf einem älteren Artikel schon mal die Funktion und die wichtigen Hintergründe für das Funktionieren von Plugins erläutert - WP - Tutorial, wir schreiben ein WordPress Plugin - Teil 1. Dort werden unter anderem die Kommentare im Code, wozu und warum, erklärt. Auch eine umfangreicher Version des vorgestellten Code entsteht dort, so dass man ein wenig flexibler ist, wenn es sich um mehrere benutzerdefinierte Felder handelt.
Kommentarregeln: Bleib cool, kritisch ist in Ordnung, aber wenn du unhöflich bist, dann lösche ich deinen Kommentar. Bitte benutze deinen persönlichen Namen oder Initialen und nicht den Namen eines Unternehmens, dies würde als Spam gewertet und wird gelöscht. Der Zusammenhang zwischen Namen und URL sollte nicht offensichtlich auf Spam hindeuten! ♥ Ansonsten, vielen Dank für den Kommentar und viel Spaß mit meinem Blog.
händischer Spam:
Beachte die Kommentarregeln, jede Form von versuchtem Spam wird gelöscht. Warum und wieso steht in einem meiner Beiträge.
Bezug auf Textstellen:
Du kannst direkt bezug auf Textstellen im Beitrag nehmen. Dazu muss lediglich der Bereich im Artikel markiert werden; daraufhin erscheint ein Button, der den markierten Text in das Kommentarfeld übernimmt und als Zitat auszeichnet. Die Funktion ist nur bei aktivem JavaScript nutzbar.
xHTML:
Du kannst folgende Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <pre> <em> <strong> <strike> <ul> <ul> <li>
Achte darauf, wenn du Code im Kommentar hinterlegen willst, dann muss der Code maskiert sein. Dann wird er nicht interpretiert. Der Code muss mit Hilfe von HTML-Entities dargestellt werden, d.h. dass man z.B. < als < und > als > einfügt.
E-Mail-Benachrichtigung bei neuen Kommentaren ?
Wenn der Haken in der Checkbox gesetzt ist, dann wirst du über neue Kommentare vie E-Mail informiert. Der Versand erfolgt nur, wenn du die URL in der Bestätigungs-E-Mail genutzt hast oder schon Abonnent hier im Blog bist.
Kommentar erscheint nicht:
Alle Kommentare werden manuell geprüft, freigegeben und nach Möglichkeit beantwortet. Bitte um etwas Geduld und Nachsicht.
Identifikationsbilder (Avatare):
Auf Gravatar.com kann man sich mit seiner E-Mail-Adresse registrieren und ein Bild hochladen, dann erscheint dieses Gravatar hier und in vielen weiteren Blogs.
Spamschutz:
Das Kommentarformular ist mit einem Spamschutz ausgerüstet. Solltest du diesen Artikel ohne JavaScript besuchen und kommentieren wollen, so muss du die Frage beantworten und das jeweilige Wort in das Textfeld eingeben.
bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.
Das Weblog wird angetrieben von WordPress und aktuell gibt es 892 Beiträge, 16496 Kommentare in 14 Kategorien und 450 Tags.
Das Blog wird liebevoll mit xHTML & CSS in Handarbeit gestaltet.
Design und Code ist unter Copyright
© 2001 - 2010 bueltge.de [by:ltge.de]
15. Oktober 2007 um 17:21
15. Oktober 2007 um 22:05
Hey Frank,
sehr schöner Artikel!
Ich liebe ebenfalls diese custom fields. Es ist unglaublich, was man damit anstellen kann. Die Sortierung der Baudenkmale nach Epoche ist auch mit custom fields und wp_list_pages gelöst.
15. Oktober 2007 um 22:08
Der Link in dem Kommentar ist etwas schlecht zu sehen
Liebe Grüße
Micha
16. Oktober 2007 um 12:29
16. Oktober 2007 um 12:41
16. Oktober 2007 um 13:56
sehr coole idee die benutzerdefinierten felder zu verwenden! hab die idee das erste mal bei micha gefunden und muss sagen WordPress ist mächtiger als man zuerst denkt.
kann man so eigentlich auch ein eigenes (etwas grösseres) plugin schreiben? also was sich auf benutzerdefnierte felder bezieht? wenn ja, dann wäre da eventuell die möglichkeit gegeben zu taggen
16. Oktober 2007 um 22:44
@Micha: Ich denke, ein Beitrag darüber wäre toll.
@Jared: Jeromeys Keywords war so aufgebaut, es wurden die Felder zum Taggen genutzt. Ist seit WP 2.3 aber nicht mehr notwendig und dementsprechend auch schneller in der DB.
16. Oktober 2007 um 23:15
@Frank, gute Idee
Werd ich in den nächsten Tagen machen!
17. Oktober 2007 um 11:17
17. Oktober 2007 um 18:22
20. Oktober 2007 um 00:18
Ich stimme ein, mit Custom Fields kann man so wahnsinnig viel machen, das wird dem Customizing geradezu gerecht.
Ich habe mit einem Freund zusammen eine Website erstellt, die zu einem immens großen Teil auf den Custom Fields beruht (detaillierter zu sehen z.B. hier und besonders hier). In den letzten beiden Beispielen sind so gut wie alle Felder auf Custom Fields aufgebaut. Teilweise rufen wir die Values auch über arrays ab, was Such- und Sortierfunktionen helfen kann.
Sehr hilfreich sind übrigens folgende Plugins: Get Gustom Field Values und Custom Field GUI
19. November 2007 um 12:01
24. Januar 2008 um 13:23
Super Beitrag. Hat mir viel Zeit erspart! Danke!
13. April 2008 um 23:31
14. Mai 2008 um 09:28
24. Mai 2008 um 15:07
4. Juni 2008 um 14:22
1. August 2008 um 17:28
Hallo Frank,
ich nutze das Plugin "Custom Field Images", es funktioniert auch wunderbar. Leider erscheint der Text dann unterhalb des Bildes anstatt daneben.
Seit WordPress 2.6 kann ich auch manuell eingefügte Bilder nicht mehr bearbeiten… bei rechtem Mouseklick und “edit” öffnet sich in allen Blogs die 404 Seite.
Auch kann ich bei diesen manuell eingefügten Bildern in den Posts den Text nicht mehr neben den Bildern einfügen, er erscheint auch hier immer unter den Bildern. Vor WordPress 2.6 klappte alles einwandfrei. Hast Du einen Tipp?
Danke Michaela
4. August 2008 um 14:45
@Michaela: Sorry nein, kann allerdings deinen Angaben auch nicht folgen. Weis also nicht, was und wie dein Problem aussieht. Kenne aber das Plugin auch nicht, so dass ich es nicht nachvollziehen kann.
25. August 2008 um 11:29
5. Dezember 2008 um 19:10
24. März 2009 um 14:40
Sehr gut. Vielen Dank! Sehr Gute Arbeit!
3. September 2009 um 14:27
Ja, die Custom Fields sind schon eine nette Sache. Wir nutzen diese auch für diverse Zusatzfeatures auf unserem Magazin.
18. September 2009 um 01:10
Der Beitrag geht irgendwie an mir vorbei... Ich kapier den einfach nicht.
Ichhabe eine Möglichkeit gesucht, wie ich in der Übersicht der Artikel im Blog ein thumbnail einsetzten kann. Ao dass man neben der Einleitung auch etwas visuelles hat ...
Aber das scheint dann hier nicht der richtige Beitrag zu sein ... Was kann man denn nun mit dem machen was du hier vorstellst ??
18. September 2009 um 10:49
@Aneas: ich habe einen Beitrag in Arbeit, der genau das erklärt, da WordPress aus meiner Sicht bessere Lösungen dafür bereit hält, als die Custom Fields, kommt hoffentlich in den nächsten Tagen.
23. September 2009 um 12:42
Wer komfortabel mit benutzerdefinierten Feldern arbeiten möchte (eindeutige Beschreibung und z.B. Uploadfunktion mit Verknüpfung zu Custom Fields) und Plugins gegenüber nicht negativ eingestellt ist, der kann sich das WordPress Plugin Flutter einmal ansehen:
http://flutter.freshout.usIch hatte dazu auch mal ein Demovideo sowie deutsche Übersetzung erstellt:
http://great-solution.de/wordpress/screencast-wordpress-flutter-alias-fresh-page/Fairerweise sei gesagt: Das Ding KANN bei intensiver Nutzung Performance fressen!
23. September 2009 um 23:34
Nee, das ist keine Alternative... Es werden zu viele Tabellen in der DB angelegt (mehr als WP selbst braucht) und dann funktioniert das ganze nicht einmal ohne Probleme. Die Supportseite ist offline und das Ticketsystem gibt keine Lösungen und redet nur um den heissen Brei. Ausserdem kann man ohne das Plugin die Daten nicht benutzen ... da frage ich mich, ob ein solches Plugin Sinn macht. Nein, meiner Meinung nicht!
19. Januar 2010 um 16:46
Super Lösung! Vielen Dank! Ein Problem das ich jetzt nur habe ist das wenn ich mein benutzerdefiniertes Feld nicht in jedem Beitrag verwenden möchte, habe ich den leeren image tag im Code mit drin. Da muss ich mir wahrscheinlich noch ne andere Vorlage für anlegen, oder gibt es eine Möglichkeit nur den kompletten IMG Code auszugeben wenn ich mein benutzerdefiniertes Feld nutze? Grüße
19. Januar 2010 um 16:50
@apaju: dazu ist ja die Abfrage; du musst prüfen, ob es das Feld Inhalt enthält; bspw. mit isset()
19. Januar 2010 um 16:57
Hm, das entzieht sich meinen programmiertechnischen Kenntnissen (=0). Ich glaube ich werde mir erstmal ein zweites Template anlegen. Hast mir aber schon sehr weitergeholfen! Danke!
1. März 2010 um 09:06
Hallo, ich nutze solch ein Feld, um die Quelle eines Artikels anzugeben, ich muss also nur die URL hinterlegen, und dann erscheint unter dem Post ein Quelle-Link.
Ich kann es bisher leider nicht 100%ig nachvollziehen, aber sendet es von dieser Art Link auch einen Pingback und wenn nicht, wie bekomme ich das hin?
1. März 2010 um 18:07
@René: nein, ein Ping wird nur von URLs aus dem Content oder den extra Feld trackbacks getriggert, kann ich auch nicht sagen, ob das geht. Eventuell gibt es einen hook, der die beiden Felder einhängt und du müsstest dein Feld ergänzen.
2. März 2010 um 10:48
Hallo, kurze Frage. Ich möchte Artikel nach PLZ sortieren. Im Loop sollte demzufolge eine variable eingetragen werden der nur die ersten beiden Ziffern einer PLZ. Mein Benutzerdef. Feld heißt in diesem Fall "plz" und beinhaltet immer die vollständige Nummer.
Mein Loop sieht so aus:
$temp = $wp_query;$wp_query= null;
$wp_query = new WP_Query();
$wp_query->query('cat=72&showposts=10&orderby=modified'.'&paged='.$paged);
Was muss ich hinzufügen das WordPress mir zum Beispiel nur den PLZ-Bereich "01" ausgiebt?
Vielen herzlichen Dank
René
2. März 2010 um 11:04
@René: ja, WP kann das im Standard, direkt in meinem Beitrag zu finden, so muss ich hier nicht erklären.
7. März 2010 um 23:47
Sehr schön. Besten Dank
3. Mai 2010 um 19:19
Guter Artikel, aber ich suche eine Lösung, dafür, dass bestimmte Benutzerdefineirte Felder automatisch in jeden neuen Artikel eingefügt werden.
Also ich drücke auf neuen Artikel erstellen und automatisch sind standardisierte Vorgaben als benutzerdefineirte Felder vorhanden.
Habe mit meinen Suchbegriffen nichts gefunden.
Evtl. hat ja hier jemand ne Idee.
Danke vorab.
RR
17. Juni 2010 um 09:37
Danke für die Tipps. Ich fange gerade erst man mit WordPress zu arbeiten. Jetzt versteh ich ein bisschen mehr, wofür diese Custom Fields da sind, bzw. was man alles damit machen kann
30. Juni 2010 um 12:13
Vielen Dank. Schön erklärt...
9. Juli 2010 um 19:52
Hallo,
ich bin durch Google (mal wieder) auf deine Seite gestoßen und habe eine Frage.
Momentan suche ich ein Widget für meine Sidebar, bei der ich die ID eines Artikels eingebe und somit dann automatisch bestimmte Custom Fields ausgelesen werden.
Ist dir eventuell dafür auch eine Lösung bekannt?
Kurz gesagt: Ich gebe in dem Widget eine Artikel ID ein und im Folgenden werden dann in der Sidebar die Custom Field-Werte ausgelesen und dargestellt.
Über einen Tipp würde ich mich sehr freuen.
Liebe Grüße,
Björn
13. Juli 2010 um 20:50
ärdbaer: nein, kein Widget dazu bekannt; ich nutze die auch wenig oder erstelle sie mir dann explizit.
1. August 2010 um 16:19
Schade, aber hätte ja sein können.
Danke trotzdem für deine Antwort.
Habe mir nun ein Widget mit einigen Eingabefeldern erstellt. Ist nicht ganz so komfortabel, aber tut es auch. Und für mein erstes Widget funktioniert es sogar recht gut.