Gravatare in WordPress ohne Plugin

Es gibt mittlerweile einige Plugins um in WordPress-Kommentaren Gravatare (Globally Recognized Avatar) anzeigen zu lassen, das bekannteste dürfte wohl das von Skippy sein. Ich bin generell kein Freund von Plugin-Orgien, da es meist in einer “mit Kanonen auf Spatzen”-Aktion endet. Deshalb suche ich zuerst immer nach einer kompakten Lösung, die man in die Template-Dateien einbauen kann. Die WordPressentwickler haben eine großartige API entwickelt und sehr umfangreiche Möglichkeiten, ein Theme seinen Wünschen entsprechend anzupassen. In den allermeisten Fällen reicht dies aus um der Webseite ein neues Feature hinzuzufügen. Und spätestens wenn man sich die Installationsanleitung und die Größe der Dateien aus Skippys Gravatar-Plugin anschaut, fragt man sich, warum für das Anzeigen einer kleinen, userabhängigen Grafik solch ein »Aufwand« notwendig ist. Also schnappte ich mir das PHP-Code-Snippet zur allgemeinen Implementierung von Gravataren und paßte es an die WordPress-spezifischen Gegebenheiten an. Grundsätzlich erfolgt der Aufruf eines Gravatars 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 anderes als die mit MD5 verschlüsselte Email-Adresse des Users/Kommentators. Per default kann ein Standard-Avatar definiert werden, falls der Kommentierende den Gravatar-Service nicht nutzt und mittels size wird die Größe des auszugebenden Avatars bestimmt. Auf Grundlage des PHP-Beispiels von gravatar.com kann man die kleinen Logos nun recht einfach in ein WordPress-Theme einbauen. Es genügt eine Bearbeitung der Theme-Datei, die für die Ausgabe der Kommentare zuständig ist. Im Standard-Kubrick-Theme ist das die comment.php in anderen Themes kann das aber direkt in der index.php integriert sein. In der betreffenden Datei suchen wir den Beginn des sog. Comment-Loops. Ich erkläre es hier am Beipsiel der comment.php im Kubrick-Theme. So sieht der urpsrünglich Comment 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 definieren wir vor diesem Loop die Adresse für einen Standard-Avatar, für den Fall, daß jemand nicht bei gravatar.com registriert ist. Beispiel:

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

Im eigentlichen Loop ergänzen 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 Variable $gravatar_url zunächst den codierten Link zum Gravatar des Kommentators zu. An Template-Tags zum Abrufen der EMail-Adresse bietet WP zwar die funktion comment_author_email(), diese gibt aber die Adresse ohne Umwege aus, d.h. ich kann sie nicht als Übergabeparameter für die md5()-Funktion verwenden. Wir verwenden statt dessen die bisher undokumentierte Funktion: get_comment_author_email() In der zweiten Zeile wird dann per IMG-Tag die eigentliche Grafik eingefügt. Als Quelle dient hierbei der so eben generierte Gravatar-Link. Es ist sinnvoll, das Bild mit einer eigenen CSS-Klasse zu versehen, da dies eine etwaige Formatierung des Avatars per CSS erleichert. Das wars auch schon. Vergleicht man den Aufwand, diese drei Zeilen Code in das Template einzufügen (zumal viele WordPress-Nutzer ohnehin einige Änderungen an ihrem Theme vornehmen) , mit dem der Installation des skipp’schen Plugins, so kann ich zumindest keinen Unterschied feststellen. Wenn alles am richtigen Platz sitzt, müßte der Comment Loop dann also so aussehen:

Geänderter Comment Loop mit Erläuterungen

Optimierungsvorschläge und Feedback sind willkommen.

Artikel: Gravatare in WordPress ohne Plugin
Datum: Tuesday, 28. February 2006, 18:14 Uhr
Kategorien: WordPress
Feed zum Beitrag: RSS 2.0 · Trackback: Trackback-URL
Diesen Artikel kommentieren.

84 Kommentare

Artikel kommentieren




Formatierung per XHTML oder Textile möglich.