WordPress: Letzte Kommentare direkt im Theme
Das Schweizer WordPress Magazin hat vor wenigen Tagen einen Artikel Veröffentlicht um die Letzten Kommentare des Blogs direkt im Theme zu intregrieren ohne das man dazu ein Plugin benötigt.
Der gezeigte ansatz ist schonmal gut gelungen, meiner Meinung nach aber nicht zufrieden stellen.
Es werden zwar die letzten Kommentare als “Auzug” Ausgegeben, jedoch ohne dem Kommentar-Autor.
Zudem ist der PHP-Snippet endlos lang, was einem die Übersicht innerhalb der “sidebar.php” (empfohlener einbau ort vom Schweizer Magazin) nimmt.
Schöner und schlanker kommt dort mein lösungs Vorschlag her. Der Code Snippet fügt den, beim Schweizer WordPress Magzin fehlenden, Autor des Kommentars hinzu.
Ich empfehle auch nicht die einbindung direkt in der sideba.php sondern eher das ganze über die functions.php und einen extra angelegten Template Tag.
Hier der Code:
Füge folgende Code in der im Theme-Ordner befindlichen functions.php hinzu oder erstelle eine neue functions.php, falls in deinen Theme keine vorhanden ist.
/**
* Lates Comments | Letzte Kommentare
*
* @author Fabian Künzel, http://fkBlog.de
*
* @version 0.0.4
* @lastmodifided Son Nov 01 2009
*/
function recent_comments_theme() {
global $wpdb, $comments, $comment;
if ( !$number = (int) $options['number'] )
$number = 5;
else if ( $number < 1 )
$number = 1;
else if ( $number > 15 )
$number = 15;
$comments = $wpdb->get_results("SELECT comment_author, comment_author_email, comment_author_url, comment_ID, comment_post_ID, comment_content FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT $number");
if ( $comments ) {
foreach ($comments as $comment) {
echo '<li>'. get_avatar( $comment, 32 ) .'<div class="meta">'
. sprintf(__('Von %1$s zu %2$s'), get_comment_author_link(), '<a href="'. get_permalink($comment->comment_post_ID) . '#comment-' . $comment->comment_ID . '" rel="follow me">' . get_the_title($comment->comment_post_ID) . '</a></div>') .
'<hr /><p>', comment_excerpt() ,'</p></li>';
}
}
}
Mit diesem Code-Snipptet direkt in der functions.php haben wir einen neuen Template Tag für WordPress erstellt und können nun die ausgabe im Theme (z.B. in der Sidebar) einfügen.
Dazu einfach folgenden Code in die endsprechende Datei:
<h2><?php _e('Recent Comments'); ?></h2>
<ul>
<?php if (function_exists('recent_comments_theme')) recent_comments_theme(); ?>
</ul>
Jetzt müssten wir an der Stelle wo der Tag eingefügt wurde, die letzten Kommentare sehen können.
Das ganze lässt sich natürlich noch mit CSS Gestallten und über den Code-Snippet den wir in der functions.php erweitern.
Ich habe den Snippet so angelegt, das er die letzten 5 Kommentare Anzeigt. Wäre gern mehr oder weniger haben will, muss nur den Wert beim ersten $number = 5; ändern. Zufinden ist er ganz oben im Code Snippet:
if ( !$number = (int) $options['number'] )
$number = 5;
Wer sich den Code in der functions.php etwas genau ansieht wird feststellen das wir alle Daten für den snippet aus der WordPress-Datenbank holen. Somit haben wir auch die möglichkeit weitere informationen wie “Datum oder Kommentar Status” abzufragen.
Updates
27 Oktober 2010 – kleine Code ausbesserrungen.

Pingback: SimplyTheme 0.2 Alphafk:Blog - Fabians Weblog0
Pingback: Umzug | Nerd 2.0
ich hab das ausprobiert, doch erscheint der Code der funktions.php dann am oberen Ende der Blog-Seite. Und zwar ganz egal, ob ich ihn noch über das Template-Tag ins Text-Widget einfüge oder nicht. (wo das Ergebnis erscheinen soll, tut sich nix)
Hallo Claudia,
kann das Problem nicht ganz nachvollziehen mit dem “alten code”, habe jedoch mal einen etwas überarbeiten PHP Code für die functions.php hinzugefügt.
Diesen verwende ich auch hier auf fkBlog direkt auf der Startseite ganz unten, ist also in jedemfall Funktionsfähig.
Sollte es mit diesem immer noch nicht klappen, kannst du mich gerne mal per E-Mail Kontaktieren, E-Mail Adresse findest du im Impressum.
Pingback: Wordpress Community - WP Gemeinschaft | Blog | WordPress: Letzte Kommentare direkt im Theme - fk:Blog - Fabians Weblog
ich hab das ausprobiert, doch erscheint der Code der funktions.php dann am oberen Ende der Blog-Seite. Und zwar ganz egal, ob ich ihn noch über das Template-Tag ins Text-Widget einfüge oder nicht. (wo das Ergebnis erscheinen soll, tut sich nix)
Link vom User entfernt durch Admin
Hallo Double,
das Code-Schnippel muss in die functions.php eingefügt werden (am besten unten vor dem schließenden “?>” und im Template über den Tag:
if (function_exists(‘recent_comments_theme’)) recent_comments_theme(); eingebunden werden.
Im Code für die Sidebar fehlt vor dem schließenden h2-Tag ein ?> für den php-Aufruf.
Hallo Marcus,
danke für den Hinweis, habs hier im im Artikel korrigiert und direkt mal zum Anlass genommen die Code Ausgabe etwas besser zu machen.
Lg Fabian