Meist gelesene Beiträge ohne Plugin in Sidebar anzeigen
Geschrieben von Sylvi in WordPress am 30.07.2011
Tags: Beiträge, meist gelesen, PHP, Sidebar
10
In der Vergangenheit verwendete ich noch das Plugin Popular Posts, um die meist besuchten Beiträge im Sidebar-Widget auszugeben. Aber wie viele andere Blogger hege ich hin und wieder den Wunsch, mich von Plugins zu trennen und mich nach einer manuellen Lösung umzusehen.
Die meisten Umsetzungen zielen allerdings darauf ab, dass die Artikel gelistet werden, zu denen am häufigsten kommentiert wurde. Ich wollte aber die Artikel in der Sidebar anzeigen lassen, die definitiv am häufigsten besucht wurden. Anfangs wusste ich nicht mehr, woher ich diesen tollen Tipp hatte. Erst als ich diesen Beitrag geschrieben hatte, stieß ich wieder auf den von Michael auf seinem blogprofis-Blog und habe ihn erst einmal zurückgestellt.
Nun möchte ich aber doch kurz schildern, wie ich den Code von Ginchen hier in diesem Blog umgesetzt habe und damit unterstreichen, wie begeistert ich von dessen Ausgabe in der Sidebar bin.
Dafür wird folgender Code verwendet:
<li>
<?php if(function_exists('stats_get_csv')) : ?>
<h2>Beliebte Artikel</h2>
<ul id="popularposts">
<?php
$top_posts = stats_get_csv('postviews', 'days=-1&limit=10');
$i = 0;
foreach($top_posts as $post) {
if(!get_post($post['post_id']) || empty($post['post_id']) || in_array($post['post_id'], array())) continue;
echo '<li><a href="'.get_permalink($post['post_id']).'">'.get_the_title($post['post_id']).'</a>
<div>('.get_comments_number($post['post_id']).' Kommentare)</div></li>';
$i++;
if($i >= 5) break;
}
?>
</ul>
</li>
Der Ursprungscode zeigt die 5 Artikel des gesamten Zeitraumes an. Ich habe ihn für mich auf 6 Artikel erhöht. Außerdem werden nur die meist gelesenen Artikel der letzten 30 Tage berücksichtigt.
Der ursprüngliche Sidebar-Code
<div id="sidebar">
<ul>
<?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar(1) ){
?>
<?
} else { ?>
<li>
<h2>Category</h2>
<ul>
<?php wp_list_cats('sort_column=name&optioncount=1'); ?>
</ul>
</li>
<li><h2>Archives</h2>
<ul>
<?php wp_get_archives('type=monthly'); ?>
</ul>
</li>
<?php wp_list_bookmarks('title_li=Partner Links&categorize=0'); ?>
<?php } ?>
</ul>
</div>
Ich habe ihn für mich auf 6 Artikel (Zeile 17: der Wert 5 wurde durch 6 ersetzt) erhöht. Außerdem werden nur die meist gelesenen Artikel der letzten 30 Tage (Zeile 10: der Wert -1 wurde durch 30 ersetzt) berücksichtigt.
Der erweiterte Sidebar-Code
<div id="sidebar">
<ul>
<?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar(1) ){
?>
<li>
<?php if(function_exists('stats_get_csv')) : ?>
<h2>Beliebte Artikel</h2>
<ul id="popularposts">
<?php
$top_posts = stats_get_csv('postviews', 'days=30&limit=10');
$i = 0;
foreach($top_posts as $post) {
if(!get_post($post['post_id']) || empty($post['post_id']) || in_array($post['post_id'], array())) continue;
echo '<li><a href="'.get_permalink($post['post_id']).'">'.get_the_title($post['post_id']).'</a>
<div>('.get_comments_number($post['post_id']).' Kommentare)</div></li>';
$i++;
if($i >= 6) break;
}
?>
</ul>
</li>
<?php endif; ?>
<?
} else { ?>
<li>
<h2>Kategorie</h2>
<ul>
<?php wp_list_cats('sort_column=name&optioncount=1'); ?>
</ul>
</li>
<li><h2>Archive</h2>
<ul>
<?php wp_get_archives('type=monthly'); ?>
</ul>
</li>
<?php wp_list_bookmarks('title_li=Partner Links&categorize=0'); ?>
<?php } ?>
</ul>
</div>
Ich hoffe, Michael nimmt es mir nicht übel, dass ich seinen Beitrag nun doch noch einmal aufgegriffen habe, aber ich dokumentiere auf meinem Blog immer gerne, wie ich solche Codes bei mir umgesetzt habe.. ![]()
Edit:
Für die Umsetzung des Codes wird das Plugin WordPress.com Stats benötigt.









Zusätzliche Footer-Sidebar in WordPress erstellen
Mehr Spritzigkeit mit CSS Sprites?
Per Feed twittern – 3 Feed-Dienste im Vergleich
Anzeige von Fehlerseiten nach Änderung der php-Version bei Strato beheben
Beschriftungen auf Grafik-Buttons von WordPress-Themes ändern
Sylvis bunte Blogwelt
Sylvis bunte Seite
Ich nutze selber die popular Posts aber auf Basis der Kommentare. Fand die Idee nicht schlecht das per Counter zu lösen aber nutzt du nicht als Grundlage das WordPress.com Stats Plugin? Das habe ich erst in den weiterführenden Links gelesen das solltest du oben noch mal irgendwo erwähnen.
Ansonsten ist der Ansatz klasse. Wer das WordPress.com Stats Plugin nutzt der sollte es so machen. Ich nutze Piwik da sollte das aber auch so ähnlich möglich sein.
Hallo Daniel,
ja Du hast recht. WordPress.com Stats wird für die Umsetzung benötigt. Da ich auf Michaels Beitrag verlinkt hatte und ich davon ausgegangen bin, dass meine Leser aufgrund der Verlinkung auch bei ihm lesen, hatte ich mir den Hinweis erspart.
Aber sicherheitshalber werde ich meinen Beitrag um diese Angabe noch ergänzen.
Danke
Gruß Sylvi
Coole Sache. Die Variante über wordpress.com stats kannte ich noch nicht. Häufig gelesene Artikel haben es definitiv “verdient” in der Sidebar gelistet zu werden.
Ich nutze noch eine weitere Möglichkeit: Google Analytics. Über dessen API bekommt man auch die häufig gelesen Artikel. Dann kann man sogar die Einstiegskeywörter als Ankertext für den Lik nehmen.
Hallo Marco,
ja ich war auch gleich angetan von der einfachen Umsetzung über wordpress.com stats. Ich verwende Google Analytics nicht, daher kommt für mich die von Dir beschriebene Alternative leider nicht in Frage.
Aber für andere Leser könnte das natürlich interessant sein. Danke für Deinen Tipp. Verwendest Du dafür ein Plugin oder wodurch wird bei Dir die Anzeige der meist gelesenen Beiträge in der Sidebar ermöglicht?
Lieben Gruß
Sylvi
Tolle Funktionalität. Wo baue ich diesen code denn genau ein? Bin selber kein PHP und WordPress-Programmierer.
Hallo vanvox,
ich habe den Code in der sidebar.php eingebaut, die in dem Verzeichnis meines Themes zu finden ist. Bei mir lautet der Pfad dahin z. B. “sylvis-blog.de/wp-content/themes/smoky/”
Gruß Sylvi.
Der Link zu ginchens Blog läuft – zumindest jetzt wo ich diesen Kommentar schreibe – ins leere.
Für die Domain an sich gilt das auch!
Gruß
Marcus
Hallo Marcus,
ich hoffe, dass es sich nur um eine vorübergehende Unerreichbarkeit handelt. Mal abwarten, ansonsten muss ich den Link wohl leider entfernen.
Aber der Code für die Umsetzung ist ja letztendlich auch in meinem Beitrag vorhanden.
Gruß Sylvi
Ich nutze den Code seit einigen Monaten und jetzt geht er plötzlich nicht mehr. stats_get_csv liefert anscheinend keine Posts zurück. Irgendeine Idee, woran es liegen könnte?
Ich hatte auch schon immer Probleme mit der -1 bei den days.
Grüße,
Christina
Hallo Christina,
hm … ich habe mir ein paar Gedanken zu Deinem Problem gemacht und denke, dass das Problem bei Dir in der Umsetzung von WordPress.com Stats liegt.
Eine Möglichkeit wäre, dass eventuell in der Datei footer.php Deines Theme-Verzeichnisses der Eintrag
fehlen könnte. Am Ende Deiner footer.php müsste also folgendes stehen:
Vielleicht etwas weit hergeholt, aber probiere doch noch einmal folgendes aus diesem Beitrag aus: Wenn die Uhrzeit bei WordPress.com Stats nicht stimmt
Ansonsten fällt mir leider nichts Besseres zu Deinem Problem ein.
Gruß Sylvi