Meist gelesene Beiträge ohne Plugin in Sidebar anzeigen

Dokumentation

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 sind, zu denen die meisten Kommentare abgegeben wurden. Ich wollte aber die Artikel in der Sidebar anzeigen lassen, die die meisten Besuche verzeichnen.

Anfangs wusste ich nicht mehr, wo ich diesen tollen Tipp fand. Erst als der Beitrag geschrieben war, stieß ich wieder auf den von Michael auf seinem blogprofis-Blog und habe ihn daher erst einmal zurückgestellt.

Nun möchte ich aber doch kurz schildern, wie ich den Code von Ginchen hier in diesem Blog umgesetzt habe. Damit möchte ich 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 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 benötigt man das Plugin WordPress.com Stats.

Edit 16.10.2014

Mittlerweile ist für die Umsetzung Jetpack erforderlich. Darin muss das Modul WordPress.com Statistiken aktiviert sein.

Die Autorin:

Sylvi

Meine Beiträge beinhalten eigene Erfahrungen über Soft- und Hardware, Social Media und die ich als WordPress-Bloggerin und Joomlanerin gesammelt habe. Zudem widme ich mich dem schönen Hobby "Fotografie".

14 Kommentare

  • 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

    • 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:

      
       	</body>
       	</html>
      

      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

    • Hej Birgit,

      wenn ich mir den von Dir verlinkten Code oder auch diesen bzw. diesen hier anschaue, ist die Ausgabe der beliebtesten Beiträge tatsächlich nicht vom Einsatz des Statistikmoduls von Jetpack abhängig.

      Im neuen Theme habe ich die Anzeige in der Sidebar nicht im Einsatz, sondern lasse derzeit zufällige Artikel im oberen Bereich anzeigen.

      Meine Bestseller-Seite ist aber immer noch auf die WordPress-Statistik angewiesen. Da ich sie schon seit Ewigkeiten nutze, sehe ich für mich erst einmal keinen Grund den Code umzustricken.

      Ich könnte mir allerdings vorstellen, dass die Anzahl der meistgelesenen Beiträge durch eine Umstellung der Funktion – wie in den verlinkten Beiträge beschrieben – erst einmal auf 0 gesetzt wird. Wäre für eine kurzfristigen z. B. monatlichen Auswertung in der Sidebar auch nicht so das Problem. Allerdings basiert meine Bestseller-Seite auf Zahlen, die seit Jahren gesammelt wurden. Die würden dann verloren gehen.

      Lieben Gruß
      Sylvi

        • Huch, habe ich das etwa noch nicht? Nicht zu fassen! :mrgreen: Na klar, dann kann ich ja mal testen, ob es auch mit der anderen Methode funktioniert. Mal schau’n, ob dann die angezeigten Beiträge identisch sind. Allerdings wird es problematisch, das lokal per Xampp oder im Testblog, der sich im Wartungsmodus befindet, zu überprüfen, weil diese Seiten ja keine Besucher haben.