Wer die meist kommentierten Artikel – most commented posts – in seinem Blog anzeigen möchte, greift in der Regel auf eines der vielen Plugins zurück. Ein Plugin braucht es für die meist kommentierten Artikel aber nicht wirklich, da die Ausgabe dieser auf einer Standard Abfrage unserer Datenbank basiert, die auch einfach in die entsprechende Theme Datei eingebunden werden kann.
So habe auch ich in meiner sidebar.php unterhalb der letzten Kommentare die meist kommentierten Artikel eingebunden (siehe “heiß diskutierte Beiträge”). Wie Ihr dort sehen könnt, wurde das erste Mal die 100 Kommentare Marke eines Beitrags überschritten. Ich bin ehrlich gesagt total baff und natürlich auch begeistert darüber, dass Ihr meine lieben Kommentatoren Euch so sehr zu Unterhaltungen auf meinem Blog hingezogen fühlt. Vielen Dank an dieser Stelle an alle!
Nun aber zum Code für die Anzeige der meisten kommentierten Artikel, den ich Euch in zwei Versionen vorstellen möchte, einmal mit der Ausgabe des gesamten Titels und einmal mit der Ausgabe eines gekürzten Titels, was für den ein oder anderen von Euch interessant sein könnte, der wie ich oft längere Titel verwendet.
5 meist kommentierte Artikel mit dem gesamten Titel:
<ul>
<?php $result = $wpdb->get_results("SELECT comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 5");
foreach ($result as $post) {
setup_postdata($post);
$postid = $post->ID;
$title = $post->post_title;
$commentcount = $post->comment_count;
if ($commentcount != 0) { ?>
<li>(<?php echo $commentcount ?> Kommentare): <a href="<?php echo get_permalink($postid); ?>" title="<?php echo $title ?>"><?php echo $title ?></a> </li>
<?php } } ?>
</ul>
5 meist kommentierte Artikel mit gekürztem Titel:
<ul>
<?php $result = $wpdb->get_results("SELECT comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 5");
foreach ($result as $post) {
setup_postdata($post);
$postid = $post->ID;
$title = $post->post_title;
$neuer_title = substr(trim($post->post_title), 0, 47) . '...';
$commentcount = $post->comment_count;
if ($commentcount != 0) {
if (strlen($post->post_title) > 47) { ?>
<li>(<?php echo $commentcount ?> Kommentare): <a href="<?php echo get_permalink($postid); ?>" title="<?php echo $title ?>"><?php echo $neuer_title ?></a> </li>
<?php } else { ?>
<li>(<?php echo $commentcount ?> Kommentare): <a href="<?php echo get_permalink($postid); ?>" title="<?php echo $title ?>"><?php echo $title ?></a> </li>
<?php } } } ?>
</ul>
Bei der Zahl 47, die angibt, ab dem wievielten Zeichen der Titel gekürzt werden soll, könnt bzw. müsst Ihr natürlich die für Euren Blog relevante Zahl angeben, damit der Titel in einer Zeile erscheint und nicht auf mehrere Zeilen aufgeteilt wird.
Wer mehr als 5 Artikel ausgeben möchte, der ersetzt die Zahl 5 am Ende der dritten Zeile mit der gewünschten Anzahl.
Ich denke sonst gibt es zu dieser relativ einfachen Abfrage nicht mehr viel zu sagen, oder habt Ihr noch Fragen dazu?
Schon wieder ein Teil deines Skripts? Ich bin erstaunt, dass Du alles so offen darlegst. Aber cool, wieder was neues
Bin gestern nicht wirklich weiter gekommen. Das Alte “Auge-Streichholz” Problem
Tanja, sag mal, kannst du Gedanken lesen. Genau nach der Anzeige mit gekürzten Titel bin ich auf der Suche. Gerade wenn man lange Titel hat, wird es bei vielen anderen Lösungen immer so unübersichtlich. Danke!
Hallo Tanja,
wie immer ein toller Artikel und eine noch bessere Dokumentation mit Coding!
Danke dafür!
Gruß
Matthias
@Sascha: Warum denn nicht
Schließlich kann ja jeder was davon haben, wenn es jemand zufällig gerade auch braucht…
@Anne: Nach gekürzten Titeln hab ich vor einiger Zeit auch ewig gesucht
Seitdem ich sie habe, möchte ich sie nicht mehr hergeben…
@Matthias: Danke
Was würde ich ohne deine Code Schnipzel machen
dabei habe ich es noch nicht einmal geschafft den anderen Code anzuschauen – dafür auch dankeschön
Danke Daniel
@Tanja: Ja ich schau mal, bin grade dabei, deinen Code einzubauen. Wenn du entferntes Schreien hörst, dann ist was schief gegangen. Um an deinen neuesten Artikel anzuknüpfen, jetzt wäre wirklich ein guter Zeitpunkt für mich, mal etwas abzuschalten. Ich bin mit den Nerven am Ende. Heut nacht werde ich vermutlich von Code-Salat träumen.
Codesalat ist toll. Meine Träume fangen Dank Tanja jetzt auch so an:
Lol mein Code ist weg. Na, Blog gesprengt?
@Tanja: Nein, dieser Code schien einfach zu sein, … erstaunlicherweise, vielleicht habe ich auch nur irgendwas entscheidendes übersehen
Allerdings stößt mir aber immer noch der Cache-Salat mit CommentLuv-Dressing bitter auf. Der Teil, den ich aus deiner Datei kopieren muss, verringt aber bereits stündlich um 1 bis 2 Zeilen
@Daniel: Klar, die Werbung gibt es ja auch
@Anne: Bis jetzt habe ich noch nichts gehört oder habe ich nur meine Lauscher nicht aufgesperrt? Ich hoffe Du hattest Erfolg und gönnst Dir dann etwas Ruhe und Erholung!
@Sascha: Da war kein Code dabei *schnüffel*
Ich sehe Du bastelst zur Zeit eh ziemlich viel rum
Ich hoffe den Cache Salat kriegst Du auch noch in den Griff
und den Strand dabei nicht vergessen… *ich auch will Meer und Strand*
Bei mir sind die Meist kommentierten Artikel schon Themeseitig mit dabei.
Was ich aber gerne einbauen würde, aber irgendwie absolut nicht gebacken bekomme, ist einen Ausschnitt aus dem Artikel mit einzubauen.
Ich weiß, das geht mit excerpt. Aber da hört es sich dann auch schon wieder auf
@Marcus: Ja, das geht mit
<?php the_excerpt(); ?>Musst Du direkt in die Funktion des Themes mit einbauen.Ich wollte demnächst mal einen Artikel schreiben, wie man mit the_excerpt mit unterschiedlichen Längen arbeiten kann.
Danke für die Antwort.
Soweit ist mir das klar.
Mein Problem ist der Code drumherum, der bei mir wie folgt aussieht:
$ output .= $ before . '<a href="' . $ permalink . '" title="' . $ post_title.'"&gr;' . $ post_title . '</a> (' . $ comment_count.')' . $after;(Natürlich ohne die Leerzeichen nach den $)
Und da das excerpt unterzubringen bring ich nicht hin
Da fehlt ein Teil des Codes
$output .= $before . '<a title="' . $post_title.'">' . $post_title . '</a> (' . $comment_count.')' . $after;@Marcus: Sorry, da kann ich Dir so nicht helfen, denn das sind alles nur Variablen, deren Inhalte hieraus nicht hervorgehen.