Die kommende Version 2.5 von WordPress hat den Gravatar-Dienst in den Core-Daten integriert. Einerseits nutzt man dies, um die Kommentarübersicht im Backend zu verschönern, andererseits kann man natürlich diese Funktion in das eigene Template integrieren und muss nicht Plugins nutzen oder andere Wege gehen.
Dazu genügt das Einfügen des folgenden Syntax und schon wird das kleine Bildchen ausgegeben.
<?php if(function_exists('get_avatar')) {
echo get_avatar( $comment );
} ?>
Die Funktion get_avatar()
(/wp-includes/pluggable.php
) kann drei Parameter aufnehmen und so kann man recht gut Einfluss nehmen.
$id_or_email
Mailadresse oder ID des Users, Kommentators$size
Größe des Gravatars in Pixel$default
Standardbild, wenn kein Gravatar dem User zugeordnet werden kann
get_avatar( $id_or_email, $size = '96', $default = '' )
Als Standard-Gravatar wird http://www.gravatar.com/avatar/ad516503a11cd5ca435acc9bb6523536 geladen, dass ist das Icon für die Mail-Adresse unknown@gravatar.com (MD5 verschlüsselt: d516503a11cd5ca435acc9bb6523536). Die Größe beträgt im Standard 96 Pixel. Es muss also lediglich der erste Parameter bzw. die Variable übergeben werden.
Die Ausgabe sind dann wie folgt aus.
<img alt='' src='http://www.gravatar.com/avatar/ad516503a11cd5ca435acc9bb6523536?s=96' class='avatar avatar-96 avatar-default' height='96' width='96' />
Somit kann mittels CSS auf das Design Einfluss genommen werden. Die Class avatar
steht übergreifend bereit. Ebenso steht eine class mit der Größe des Gravatar bereit: avatar-GRÖßE
. Vielfältige Formatierungen sind also möglich.
Wie einbauen?
Da immer wieder Nachfragen kommen, hier eine kurze Möglichkeit die Funktion einzubauen, für nicht PHPler.
Grundsätzlich muss der Code in die comments.php
, die sorgt für die Ausgabe und das Formular der Kommentare. Natürlich kann das anders sein, bei dem einen oder anderen Theme, aber die Masse wird wohl so aussehen.
Die Funktion muss in die Ausgabe jedes einzelnen Kommentars, das bedeutet, dass sie in der Schleife <?php foreach ($comments as $comment) : >
hinterlegt sein muss.
In der Regel nach dem li
-Punkt, der die Ausgabe des einzelnen Kommentars ausgibt.
Suche:
<ol class="commentlist">
<?php foreach ($comments as $comment) : ?>
<li &t;?php echo $oddcomment; ?>id="comment-&alt;?php comment_ID() ?>">
Ersetze:
<ol class="commentlist"<
<?php foreach ($comments as $comment) : ?>
<li <?php echo $oddcomment; ?>id="comment-<?php comment_ID() ?>"<
<?php echo get_avatar( $comment, 32 ); ?>
Einige Thems kommen ohne eine Liste aus (ol
oder ul
); die Ausgabe wird dort via div
erzeugt. Wichtig ist nur, es muss in der Schleife sein.
<?php foreach ($comments as $comment) : ?>
. . .
<?php endforeach; /* end for each comment */ ?>
Formatierung via CSS
Die Formatierung könnte dann wie folgt aussehen. Dieser Syntax gehört in die style.css
des verwendeten Themes.
.commentlist li .avatar {
float: right;
border: 1px solid #eee;
padding: 2px;
background: #fff;
}
Das Plugin „Easy Gravatars“ ist bisher die wirklich einfachste Möglichkeit, die ich für mich fand – denn da muss _nichts_ geändert werden. Zumindest nicht in den von mir betreuten Blogs.
http://dougal.gunters.org/
danke für den Beitrag!
Hoffe die DE Version von 2.5 erscheint bald mal.
mfg
Bin zurück, hoffe habt ein nettes Osterfest verbracht, Energie getankt, damit noch viel neues von Euch kommt. Gute Artikel, sehr gut zu lesen;-)
Ich gehe dann aber mal davon aus, dass bis zum Final der Code auch noch valide wird? Also vor allem doppelte Anführungszeichen für die Werte. Andererseits, diesen Lapsus leistet sich WP in der aktuellen Version auch noch, wenn man z.B. Grafiken aus dem Upload/der Galerie in den Editor sendet.
Ich weiß immer noch nicht so recht, in welche Datei und an welche Stelle ich das Codeschnippsel einfügen muss. comments.php? Und an welcher stelle? Ich habe zwar das Prinzip verstanden, in den recent comments und im backend funktioniert das mit den Gravataren auch – nur halt auf der single.php bzw. in der comments.php – da mangelts noch 🙁
@ml: ich habe es mal exemplarisch erweitert, hoffe, dass es dir hilft.
Damit geht es, vielen Dank.
Hallo,
kann ich auf diese Weise einen Gravatar auch in die Single.php einbauen? Ich möchte für ein Magazin gerne auch in den Artikeln den Gravatar haben.
Vielen Dank für Antwort.
Beste Grüße
Frank
@Frank: Die Funktion funktioniert immer im Loop, also auch in der
single.php
. Die Variable$comment
muss in dem fall nur aus einem anderen Hintergrund gefüllt werden. Ich mache mal einen kleinen Artikel dazu fertig.sehr netter Beitrag. Finde den Einsatz von Gravataren super, eine Bereicherung für jedes Blog.
Herzlichen Dank! Ich steig grad auf WordPress um und das hier hat mir sehr geholfen.
Eine Frage hätte ich noch: Was muss ich machen, damit das Gravatar nicht allein in einer Zeile steht und der Text darunter beginnt, sondern um den Gravatar herumfließt?
Herzlichen Dank
bee
bee » Dazu ist eine Formatierung via CSS nötig.
Klappt, herzlichen Dank dir!
toller artikel! eine frage habe ich aber noch:
wie kann ich denn das Standardbild als relativen Bildpfad laden? Ich habe folgendes probiert:
echo get_avatar( $comment, 40, '/images/avatar-default.jpg' );
Funzt natürlich nicht.
Hallo Frank 😉
das würde mich auch interessieren!
Kann man WordPress denn ein Standardbild geben? Also wenn jemand keinen Gravatar mit seiner Mailaddy verknüpft hat?
Das würd mein neues Layout nicht ganz so sehr „sprengen“ 😉
lg
Jared
ja, lediglich den Paramter $default pflegen, wie oben beschrieben.
$default = ‚/zum_bild/tets.jpg‘
funkioniert eben leider nicht.
Dann erscheint nämlich folgendes in der Ausgabe an der Stelle des Standardbildes:
http://www.gravatar.com/avatar/220ec4b21a1a87217c4418cb59c14465?s=40&d=/zum_bild/tets.jpg&r=G
Mit einem absoluten Bildpfad wird das Bild richtig dargestellt. Deshalb auch meine Frage, ob es auch mit einem relativen Pfad machbar wäre.
@nitnat: versuche mal:
Konnte aus Zeitmangel nicht testen.
jo, funktioniert! Allerdings ohne urlencode(), also folgendermaßen:
herzlichen dank für deine hilfe!
Stimmt! das klappt super 🙂
Danke für die Hilfe
Hallo Frank,
wie kann ich den ein eigenes Gravatar für Trackbacks einbinden? Hab da im Netz nichts zu gefunden…
Vielen Dank
Alex