galuba dot net

Informationen zu Wordpress, jQuery, Web 2.0, Apple u.v.m.

WordPress: Die längsten Artikel anzeigen

| 4 Kommentare

In WordPress kann eigentlich alles mögliche angezeigt werden, ich wollte heute die längsten Artikel mit so wenig Code wie nötig auf meiner Seite auslesen. Ich bin zu dem Schluss gekommen das es am einfachsten ist, die Anzahl der Zeichen direkt in MySQL auszulesen und die Leerzeichen auszuklammern.

So wird das Ergebnis meiner Meinung nach am genauesten ausfallen. Kopiert den Code-Schnipsel einfach in die single.php eures Themes und editiert die Überschrift im H3-Tag.

<?php
$query = "SELECT ID, post_title, LENGTH(REPLACE(post_content,' ','')) AS count FROM $wpdb->posts WHERE post_type = 'post' ORDER BY LENGTH(post_content) DESC LIMIT 5";
$result = $wpdb->get_results($query);

if ($result) {
    echo '<h3 class="widget-title">Die l&auml;ngsten Artikel auf galuba dot net</h3>';
	echo '<ul>';
    foreach($result as $post) {
        echo '<li><a href="'.get_permalink($post->ID).'">'.$post->post_title.'</a> ('.$post->count.')</li>';
    }
    echo '</ul>';
}
?>

Autor: René Galuba

Hallo, ich heiße René und verfasse hier meine aktuellen Trainingsberichte und Neuigkeiten aus der Apple-Welt. Ich bin Programmierer und schreibe daher auch gerne über Wordpress, PHP, jQuery und weitere Web 2.0 Themen. Auf meinen Facebook, Google+ und Twitter Profilen erfahrt ihr noch mehr über mich.

4 Kommentare

  1. Vielen Dank für den Code. Ich habe es auf unserer Seite integriert in der sidebar.php. Allerdings habe ich den Eindruck, dass die Ladezeit der Seite damit – trotz wp supercache – ziemlich nach oben gegangen ist. Kannst du das bestätigen? Vielleicht liegt es bei uns daran, dass wir tausende von Artikeln in WP haben, da wäre dann ein Cache bzw. täglich einmalige Berechnung der Ausgabe nicht schlecht…

  2. Eine Veränderung der Ladezeit konnte ich dadurch, zumindest in meinem Blog nicht feststellen. Aber zu dem Zeitpunkt hatte ich auch noch nicht so viele Artikel veröffentlicht, daher kann es ganz gut sein, das die Ladezeit dadurch höher wird. Auch weil die MySQL-Abfrage recht speicherintensiv ist, da ja von jedem Artikel die Anzahl der Zeichen errechnet werden muss.

    Das könnte umgangen werden indem man das Ergebnis zwischenspeichert (z.B. in einer Textdatei) und diese mittels eines Zeitstempels nur ein oder zwei Mal pro Tag aktualisiert.

  3. Ja, genau sowas wäre interessant. Da ich das nicht kann, hab ich den Code erstmal rausgenommen. Vielleicht teste ich es nochmal bei einer kleineren Seite, wo MySQL nicht so schwitzen muss :) Danke für deine Antwort!

  4. Hallo,
    genau so etwas suche ich. Da ich ein widget dazu in meine Sidebar einfügen möchte meine Frage: Gibt es so etwas auch als plugin? Habe dazu nichts gefunden.

Hinterlasse eine Antwort

Pflichtfelder sind mit * markiert.

*