Webentwicklung

Die neue Wordpressversion liefert einige interessante Funktionen. Wie z.B. die neue “Thumbnail”-Funktion. Diese erlaubt es jedem Beitrag ein kleines Vorschaubild zuzuordnen. Was vorher nur über Sonderfelder möglich war, ist nun also einfach mit Hausmitteln zu bewerkstelligen.

In vielen Blogs findet man in der Auflistung der Artikel kleine Vorschaubilder. Auch auf dieser Seite. In der Übersicht wird links neben dem Artikel ein 150×150 Pixel großes Bild gezeigt.

Das war bisher mit einigem Aufwand verbunden. Zunächst musste das Bild hochgeladen werden, der Pfad zum Thumbnail (welches WordPress automatisch anlegt) kopiert werden und ein Spezialfeld damit gefüllt werden.
Da ich bei CC-Bildern auch immer eine Quelle nenne, musste ich ein zweites Spezialfeld mit der Quellenangabe füllen. In meinem Theme habe ich dann bei jedem Post die Metadaten abgefragt und nach den passenden Feldern Ausschau gehalten. Existierten sie, habe ich das Feld ausgelesen und das Bild und ggf. die Quelle angezeigt.

Das ist mit WordPress 2.9 nun Vergangenheit. Denn WordPress erlaubt es mir im Medienbrowser ein Vorschaubild für den Beitrag auszuwählen. Dieses Bild kann ich dann in meinem Theme durch ein entsprechendes Template-Tag anzeigen.

Und so funktioniert es:

Theme thumbnailfähig machen

Wer sich direkt auf die Suche nach der neuen Funktion gemacht hat, wird sich wahrscheinlich ein wenig wundern. Nichts dergleichen ist im Beitragseditor zu finden. Zunächst muss nämlich das WordPress-Theme um die neue Funktionalität erweitert werden.

Dazu muss die functions.php im Theme-Verzeichnis editiert werden. Existiert diese nicht, legt man sie neu an. Dann muss folgende Zeile ergänzt werden:

add_theme_support('post-thumbnails');

Damit steht nun überall auf der Seite die neue Funktionalität zur Verfügung. Wenn Thumbnails nicht überall benutzt werden sollen, kann man die Thumbnails auf bestimmte Inhaltstypen begrenzen:

add_theme_support('post-thumbnails', array('post', 'page'));

Damit stehen Thumbnails nur Posts und Seiten zur Verfügung.

Das Vorschaubild anlegen

Sobald die Unterstützung für Thumbnails im Theme eingerichtet wurde, taucht im Beitragseditor eine entsprechende Box auf.

Mit einem Klick kann im Medienbrowser ein Bild ausgewählt und als Vorschaubild definiert werden. Das war’s.

Das Vorschaubild anzeigen

Damit das Bild auch angezeigt wird, muss das Theme erweitert werden.

An der entsprechenden Stelle ergänzt man die Funktion:
< ?php the_post_thumbnail('thumbnail'); ?>

Das vorher definierte Vorschaubild erscheint nun an Ort und Stelle.
Da WordPress beim Hochladen von Bildern mehrere Größen erzeugt, können auch diese angezeigt werden. Dazu ändert man einfach den Parameter:

< ?php the_post_thumbnail('medium'); ?>
< ?php the_post_thumbnail('full'); ?>

Prüfen ob ein Thumbnail vorhanden ist

Es macht Sinn zu prüfen, ob ein Thumbnail vorhanden ist. Ist keines da, will man den Beitrag vielleicht anders darstellen oder ein Ersatzbild anzeigen. Auch hier gibt es eine einfache Lösung:

< ?php has_post_thumbnail(); ?>

Die Funktion liefert ein “true” oder “false” zurück.

Tipps für Experten

Alternativbild
Natürlich kann man noch viel mehr mit der neuen Funktion anstellen.
Ich bin im oberen Abschnitt ja schon auf die Möglichkeit eingegangen, zu prüfen, ob ein Thumbnail wirklich vorhanden ist. Darauf will ich nun noch mal genauer eingehen. Es soll geprüft werden, ob ein Thumbnail definiert wurde. Ist dies nicht der Fall, soll ein Alternativbild angezeigt werden.

< ?php
if(has_post_thumbnail()) {
the_post_thumbnail('thumbnail');
}
else {
echo '< img src=".../theme/images/default.png" alt="Default" />';
}
?>

Hier wird geprüft, ob der entsprechende Beitrag ein Thumbnail hat, wenn ja, wird dieses, ansonsten ein Standardbild angezeigt. Man könnte noch einen Schritt weitergehen und für jede Kategorie ein Standardbild anlegen und dieses dann entsprechend anzeigen. Sollte es Interesse an so einem Snippet geben, schreibt mich kurz über Twitter oder in den Kommentaren an und ich schreibe etwas dazu.

Caption anzeigen

Ich benutzt immer wieder Bilder von Flickr als Thumbnail. Natürlich “beschränke” ich mich da auf Bilder, die unter der passenden CC-Lizenz stehen. Ich will und muss dann aber entsprechend auch eine Quelle anzeigen. Das soll direkt unter dem Bild geschehen.

Bisher habe ich das über ein Spezialfeld gelöst. Mit der neuen Thumbnailfunktion wollte ich aber darauf verzichten. Ich habe mir also überlegt, die Beschreibung, die ich im Medienbrowser von WordPress eingebe als Feld für meine Quellenangaben zu nutzen.

Die Daten sind nun alle mit dem Bild gespeichert, müssen aber auch irgendwie angezeigt werden. Ich bin auf die Suche gegangen, habe aber keine Möglichkeit gefunden die Beschreibung mittels Template-Tag anzuzeigen. Also habe ich selber eine Lösung geschrieben:

< ?php
$thumbID = get_post_thumbnail_id($post->ID,'thumbnail');
$tmp = get_post($thumbID);
echo $tmp->post_content;
?>

Ich ermittle mit “get_post_thumbnail_id” die ID des Thumbnails. Dann hole ich mir die Post-Daten (also ID,Titel usw.). Schließlich brauche ich nur noch “post_content” ausgeben, was bei einem Bild die oben eingegebene Beschreibung ist. Und das war es auch schon.

Das Design verfeinern

Mit der Funktion the_post_thumbnail() kann ich noch ein wenig mehr anstellen, als oben beschrieben. Dank einiger Paramenter lässt sich die Ausgabe noch etwas verfeinern. Ich kann z.B. eine bestimmte Bildgröße übergeben und zwar in Pixel:

< ?php the_post_thumbnail(array(200,200)); ?>

Außerdem kann ich der Ausgabe noch eine CSS-Klasse mitgeben:
< ?php the_post_thumbnail(array(200,200), array('class' => 'alignleft')); ?>

Ich denke damit kann man nun einiges anstellen.
Ich hoffe dieser Beitrag ist eine kleine Hilfe im Umgang mit der neuen Funktion und hat vielleicht ein paar Ideen geliefert.

Mehr Informationen findet ihr hier:
http://justintadlock.com/archives/2009/11/16/everything-you-need-to-know-about-wordpress-2-9s-post-image-feature
http://wpengineer.com/the-ultimative-guide-for-the_post_thumbnail-in-wordpress-2-9/

Über Anregungen freue ich mich natürlich. Gerne hier in den Kommentaren oder über Twitter.


Kommentare zu diesem Beitrag


6.01.2010 um 23:05
Babel

wow klasse! werd mich direkt mal dransetzen das erleichert es wirklich auf dauer :)
wenn ich die funktion benutze um eine bestimmte größe anzugeben wird das bild allerdings immer beim aufruf “transformiert” was zu längeren ladezeiten führen kann oder?
ich benutze zur zeit das array-theme (http://www.arrastheme.com/) welches einmalig Thumbs in der passenden Größe erstellt und diese dann immer aufruft.

ich guck mal ob sich das irgendwie kombinieren lässt. danke schonmal!


7.01.2010 um 20:02
Babel

hier eine lösung falls wer die Thumbs auch als Links nutzen will:

justintadlock.com/archives/2009/11/16/everything-you-need-to-know-about-wordpress-2-9s-post-image-feature


7.01.2010 um 20:08
Babel

Wenn jemand das Thumb-Image eines Posts verlinken will muss er die Methode “get_the_post_thumbnail” benutzen. Einfach mal nach googlen…

danke an den autor für den tollen Bericht und den Hinweis! :)


9.01.2010 um 16:35
maurice

@babel: Danke für das Lob :) Damit die Funktion nicht ständig die Thumbnails in der expliziten Größe erstellt, kann man natürlich in den WordPress-Einstellungen die Größe der einzelnen Bildgrößen in Pixel festlegen. Damit wird dann das Thumbnail in der passenden Größe nur einmal erstellt.


13.03.2010 um 10:30
Luigi

Klasse Artikel! Vielen Dank für die Tipps! nun such ich mir schon die ganze Zeit einen Wolf wie ich das Vorschaubild auf der Startseite noch zum jeweiligen Artikel verlinken kann. Bestimmt ganz einfach, doch ich seh wohl den Wald vor lauter Bäumen nicht. Kannst du da helfen?


15.03.2010 um 12:10
maurice

Hallo Luigi,

die schnellste Methode ist wahrscheinlich einfach, den Permalink des Artikel drum herum zu flechten. Z.B. so:

echo '<a href="'; the_permalink(); echo'" title="Beitrag anzeigen" rel="nofollow">'; the_post_thumbnail(array(150,150)); '</a>';

Das ist nicht unbedingt schön, funktioniert aber. Die bessere Methode hat Babel ein paar Kommentare weiter oben gepostet. Der Link erklärt, wie man sich eine entsprechende Funktion selber basteln kann.


[...] Magazine Basic und Typebased überflüssig machen. Wer sich dafür genauer interessiert, findet bei Im Ernstfall und bueltge.de gute [...]


30.04.2010 um 18:05
Martin

Das hat schon mal wirklich geholfen. Hat jemand jetzt noch eine Idee, wie man die Thumbnails mit den letzten Artikeln in der Sidebar kombinieren kann? Danke …


30.04.2010 um 18:59
Thomas

Servus
Ich hab nun Thumbnails in mein Theme eingefügt, für die Index-Ansicht 150×150 und für die Single-Ansicht 630×200.
Das Thumb in der Index-Ansicht soll ein bestimmter Ausschnitt aus der großen Variante sein. Jemand ne Idee wie sich dass relaisieren lässt? Ein editieren des Miniaturbildes hats nicht gelöst…
Danke schomal


5.05.2010 um 21:31
mkellenberger

Ich bin auch gerade dabei diese Funktionalität in ein Theme einzubauen, nur hab ich da das Problem, dass ich das TDO Mini Forms Plugin verwende um es Besuchern zu ermöglichen, eigene Posts mit Bildern zu erstellen.

Mein Problem ist jetzt, dass man ja das Thumbnail-Image manuell setzen muss, was mit TDO Mini Forms jedoch nicht geht. Ich habe jedoch die Möglichkeit, die Bild-URL in ein Custom-Field zu schreiben, kann man damit und mit the_post_thumbnail() etwas anfangen?


3.07.2010 um 13:11
MIka

Super Artikel genau sowas habe ich gesucht und werde jetzt sofort versuchen umzusetzen. Danke und weiter so


1.08.2010 um 14:23
maurice

@martin: wahrscheinlich nicht, ohne selber ein Widget zu schreiben.

@Thomas: Den Ausschnitte, der beim Thumbnail ausgeschnitten wird, kannst Du, meines Wissens nach, nicht beeinflussen.

@mkellenberger: Wie wäre es denn, das Ganze Ding zu erweitern und beim Speichern eines Benutzerartikels folgendes aufzurufen:

update_post_meta( $post_id, ‘_thumbnail_id’, $thumbnail_id );

$thumbnail_id müsste dann die ID von dem hochgeladenen Bild sein. Vielleicht hilft Dir das ja weiter.


29.12.2010 um 15:40
Miki

Hallo Maurice,

super erklärt echt klasse!

Vielen Dank.

Ich wünsche einen guten Rutsch.

Gruß Miki



28.02.2011 um 21:07
Timo

Hallo,
vielen Dank für die verständliche und umfassende Erklärung! Auch bei WP3 ist ja leider noch etwas Handarbeit nötig.
Grüße aus Nürnberg
Timo


[...] Phil erklärt in seinem Artikel Post Thumbnails verwenden noch, wie ihr verschiedene Größen für das Thumbnail festlegen könnt. Wenn ihr wissen wollt, wie ihr einem Artikel eine Bildunterschrift verpassen könnt, dann findet ihr Infos darüber in Maurices Artikel Thumbnails in WordPress. [...]


11.07.2011 um 08:57
Sinobad

Danke für den Hinweis mit den Captions – dass wusste ich bislang noch nicht. Sehr sinnvoll.



Kommentieren