Gravatare in WordPress ohne Plugin

28 02 2006

Es gibt mitt­ler­weile einige Plugins um in WordPress-​Kommentaren Gra­va­tare (Glo­bally Reco­gnized Ava­tar) anzei­gen zu las­sen, das bekann­teste dürfte wohl das von Skippy sein. Ich bin gene­rell kein Freund von Plugin-​Orgien, da es meist in einer “mit Kano­nen auf Spatzen”-Aktion endet. Des­halb suche ich zuerst immer nach einer kom­pak­ten Lösung, die man in die Template-​Dateien ein­bauen kann. Die Word­Press­ent­wick­ler haben eine groß­ar­tige API ent­wi­ckelt und sehr umfang­rei­che Mög­lich­kei­ten, ein Theme sei­nen Wün­schen ent­spre­chend anzu­pas­sen. In den aller­meis­ten Fäl­len reicht dies aus um der Web­seite ein neues Fea­ture hin­zu­zu­fü­gen. Und spä­tes­tens wenn man sich die Instal­la­ti­ons­an­lei­tung und die Größe der Dateien aus Skip­pys Gravatar-​Plugin anschaut, fragt man sich, warum für das Anzei­gen einer klei­nen, use­r­ab­hän­gi­gen Gra­fik solch ein »Auf­wand« not­wen­dig ist. Also schnappte ich mir das PHP–Code-​Snippet zur all­ge­mei­nen Imple­men­tie­rung von Gra­va­t­aren und paßte es an die WordPress-​spezifischen Gege­ben­hei­ten an. Grund­sätz­lich erfolgt der Auf­ruf eines Gra­va­t­ars wie folgt:

http://www.gravatar.com/avatar.php?gravatar_id=
cf61b272a2f8d598c49a26582ac4efb6&default=
http://justa.domain.com/default_avatar.jpg&size=40

Die gravatar_​id ist nichts ande­res als die mit MD5 ver­schlüs­selte Email-​Adresse des Users/​Kommentators. Per default kann ein Standard-​Avatar defi­niert wer­den, falls der Kom­men­tie­rende den Gravatar-​Service nicht nutzt und mit­tels size wird die Größe des aus­zu­ge­ben­den Ava­t­ars bestimmt. Auf Grund­lage des PHP–Bei­spiels von gra​va​tar​.com kann man die klei­nen Logos nun recht ein­fach in ein WordPress-​Theme ein­bauen. Es genügt eine Bear­bei­tung der Theme-​Datei, die für die Aus­gabe der Kom­men­tare zustän­dig ist. Im Standard-​Kubrick-​Theme ist das die comment.php in ande­ren The­mes kann das aber direkt in der index.php inte­griert sein. In der betref­fen­den Datei suchen wir den Beginn des sog. Comment-​Loops. Ich erkläre es hier am Beip­siel der comment.php im Kubrick-​Theme. So sieht der urps­rüng­lich Com­ment Loop aus (Auschnitt):

<?php foreach ($comments as $comment) : ?>
<li class=“commentbody” id=“comment-<?php comment_ID() ?>”>
<?php comment_author_link() ?>
<?php if ($comment->comment_approved == ‘0’) : ?>
<em>Your comment is awaiting moderation.</em>

<?php endforeach; /* end for each comment */ ?>

Zunächst defi­nie­ren wir vor die­sem Loop die Adresse für einen Standard-​Avatar, für den Fall, daß jemand nicht bei gra​va​tar​.com regis­triert ist. Beispiel:

<?php $gravatar_default = “http://domain.com/images/avatar.gif”; ?>

Im eigent­li­chen Loop ergän­zen wir zwei Zeilen:

<?php $gravatar_url = “http://www.gravatar.com/avatar.php?gravatar_id=” . md5(get_comment_author_email()) . “&default=” . urlencode($gravatar_default) . “&size=40”; ?>
<img class=“gravatar” src=”<?php echo $gravatar_url ?>” alt=“Gravatar of <?php comment_author() ?>” />

Die erste Zeile weist der Varia­ble $gravatar_url zunächst den codier­ten Link zum Gra­va­tar des Kom­men­ta­tors zu. An Template-​Tags zum Abru­fen der EMail-​Adresse bie­tet WP zwar die funk­tion comment_​author_​email(), diese gibt aber die Adresse ohne Umwege aus, d.h. ich kann sie nicht als Überg­a­be­pa­ra­me­ter für die md5()-Funktion ver­wen­den. Wir ver­wen­den statt des­sen die bis­her undo­ku­men­tierte Funk­tion: get_​comment_​author_​email() In der zwei­ten Zeile wird dann per IMG–Tag die eigent­li­che Gra­fik ein­ge­fügt. Als Quelle dient hier­bei der so eben gene­rierte Gravatar-​Link. Es ist sinn­voll, das Bild mit einer eige­nen CSS–Klasse zu ver­se­hen, da dies eine etwaige For­ma­tie­rung des Ava­t­ars per CSS erlei­chert. Das wars auch schon. Ver­gleicht man den Auf­wand, diese drei Zei­len Code in das Tem­plate ein­zu­fü­gen (zumal viele WordPress-​Nutzer ohne­hin einige Ände­run­gen an ihrem Theme vor­neh­men) , mit dem der Instal­la­tion des skipp’schen Plugins, so kann ich zumin­dest kei­nen Unter­schied fest­stel­len. Wenn alles am rich­ti­gen Platz sitzt, müßte der Com­ment Loop dann also so aussehen:

Geän­der­ter Com­ment Loop mit Erläuterungen

Opti­mie­rungs­vor­schläge und Feed­back sind willkommen.

Konversation  

Kommentare



Konversation  

Artikel kommentieren








Kommentare können mit (X)HTML-Elementen oder mit Textile ausgezeichnet werden. Es werden nicht alle Elemente unterstützt. Diesbezüglich gilt: »Weniger ist mehr.«

Smallprint

Impressum & Co.

HA·BÁ·RI