WordPress bietet von Haus aus ein Widget an, dass die letzten Kommentare anzeigt. Allerdings ist das relativ mager – es zeigt lediglich den Namen des Kommentators sowie den Titel der kommentierten Seite an.
Es gibt eine Vielzahl an Plugins, mit denen man Kommentare in allen Varianten per Widget anzeigen kann. Aber es ist wirklich einfach, die WordPress-Kommentare ohne den Einsatz eines Plugins in einem Widget auszugeben.
Ihr müsst lediglich einen Code in eure functions.php, eure style.css und in ein Textwidget setzen und fertig ist die Anzeige der letzten Kommentare ohne Plugin.
Damit der PHP-Quellcode in euren Widgets nicht einfach nur als Text angezeigt sondern auch funktional interpretiert wird, brauchen wir in der functions.php folgenden Quellcode:
//Textwidget Php-fähig machen add_filter('widget_text', 'textwidget_kann_php', 99); function textwidget_kann_php($text) { if (strpos($text, '<' . '?') !== false) { ob_start(); eval('?' . '>' . $text); $text = ob_get_contents(); ob_end_clean(); } return $text; }
Diesen Quellcode habe ich bestimmt schon öfters erwähnt – daher kann es gut sein, dass ihr diesen Code schon eingebaut habt….
Hier findet ihr den Originalbeitrag von wplancer.com, der dieses fantastische Script geschrieben hat.
Ich habe diesen jedoch für das Beispiel der Ideenlounge leicht modifiziert in meine functions.php eingebaut:
function bg_recent_comments($no_comments = 6, $comment_len = 80, $avatar_size = 30) {
$comments_query = new WP_Comment_Query();
$comments = $comments_query->query( array( 'number' => $no_comments ) );
$comm = '';
if ( $comments ) : foreach ( $comments as $comment ) :
$comm .= '<div class="wgin_comment"><a class="author" href="' . get_permalink( $comment->comment_post_ID ) . '#comment-' . $comment->comment_ID . '"><b>';
$comm .= get_avatar( $comment->comment_author_email, $avatar_size );
$comm .= get_comment_author( $comment->comment_ID ) . ': ';
$comm .= '</b>' . strip_tags( substr( apply_filters( 'get_comment_text', $comment->comment_content ), 0, $comment_len ) ) . '...<div style="clear:both;"></div></a></div>';
endforeach; else :
$comm .= 'No comments.';
endif;
echo $comm;
}
Hier noch eine kurze Erläuterund zur rot markierten Zeile:
Fügt nun in eurer WordPress Administration unter Design >> Widgets ein neues Textwidget mit folgendem Text ein:
<?php bg_recent_comments(); ?>
Hier findet ihr meine CSS, die ich hier auf der Ideenlounge in der style.css verwendet habe – inklusive der Kommentare, was diese CSS genau machen:
.wgin_comment {font-size:12px; margin-bottom:2px} .wgin_comment a {text-decoration:none;padding:10px; color:#000; background-color:#e0eaf0; display:block; border:none} .wgin_comment a:hover {color:#fff; background-color:#202023; } .wgin_comment img {float:right; margin-left:10px;}
Die roten Farbwerte sind die Farben für die Hintergrundfarbe der Boxen im Normalzustand und bei Mouseover. Grün ist die Farbe des Textes.
Und das war es schon – der Zeitaufwand ist minimal und ihr habt ein Plugin weniger.
Probiert es einfach mal aus!
Hallo!
Mich würde interessieren, wie ich in dem Widget „Letzte Kommentare“ denn die Bilder der Verfasser anzeigen lassen kann.
Danke.
Hallo Herr Hehn,
zuerst dachte ich – das ist ja ganz einfach – man füge einfach den Avatar des Autors hinzu – allerdings ist dies nicht der Fall, denn dann wird in dem kompletten Widget nur der Avatar des Autors des aktuell geöffneten Beitrags angezeigt. Auch sämtliche resetquery Methoden greifen nicht.
Ich würde empfehlen, mal direkt bei dem Verfasser dieses Scripts nachzufragen – eventuell kann er weiter helfen.
Viele Grüße
Mirjam