WP-Post-Counter: Plugin für WordPress welches anzeigt wie oft ein Artikel gelesen wurde

ACHTUNG!! DIESES PLUGIN WIRD NICHT MEHR WEITERENTWICKELT. KEINE AHNUNG OB ES ÜBERHAUPT NOCH FUNKTIONIERT MIT DER DERZEITIGEN WORDPRESS VERSION!!

Plugin

Da ich solch ein einfaches Plugin nirgendwo finden konnte, habe ich mich entschlossen eines zu programmieren:

Das Plugin gibt aus, wie oft ein Beitrag gelesen wurde. Es setzt dazu eine extra Spalte in die wp_posts Datenbank und kann daher natürlich nur die Beiträge zählen, die nach der Installation des Plugins geklickt werden.

Das Plugin braucht nicht konfiguriert zu werden sondern wird einfach in den Ordner wp-content/plugins kopiert und aktiviert.

Sobald ein Artikel, eine Seite oder ein Archivartikel angeklickt werden, zählt das Plugin die Klicks.
Durch sessionbasierte Sperren wird ein Besucher pro Artikel nur einmal gezählt, auch wenn er den selben Artikel mehrmals anklickt.

Der Artikelcounter kann dann im Template eingebaut werden und wird automatisch angezeigt:

<?php echo wpp_show_counter(); ?>

oder es wird ein Tag für den Counter direkt in den Artikel gesetzt:

[ wpp_count ]

Ich übernehme keine Haftung oder Garantie für das Plugin. Benutzung auf eigene Gefahr. Das Plugin wurde von mir mehrfach getestet und wird auch hier eingesetzt.

Download

wp-post-counter-v1.0

Hack

Falls ihr nicht wollt, dass eingeloggte User ebenfalls gezählt werden (wenn ihr z.B. Statistiken auswertet und euch öfter durch Beiträge klicken müsst), könnt ihr dies mit wenigen Handgriffen erledigen:

Öffnet des Plugins im Plugineditor. Findet

$wpdb->query("UPDATE $wpdb->posts SET `wpp_count` = '$newvalue' WHERE `ID` = '$id'");

und ersetzt es mit

if ( is_user_logged_in() ) { } else {
$wpdb->query("UPDATE $wpdb->posts SET `wpp_count` = '$newvalue' WHERE `ID` = '$id'"); 
}

Es werden ab jetzt nur Gäste gezählt.

49 Kommentare zu „WP-Post-Counter: Plugin für WordPress welches anzeigt wie oft ein Artikel gelesen wurde“

  1. Hallo! ?
    Ich benutze seit Jahren dieses Plugin. Jetzt hab ich aber ein Cache Plugin eingefügt, das den Cache dauernd leert und die Zugriffe werden jetzt auf der Hauptseite und in den Artikeln nur noch so zu 5% angezeigt. Sieht jetzt irgendwie voll armselig aus, so als würde niemand mehr in dem Blog lesen. :-/ Kann man das Plugin wp-post-counter irgendwie umschreiben, dass es vom Cache unberührt bleibt? Oder kann man die irgendwie in ein anderes Plugin importieren? ?
    Liebe Grüße

    1. Hallo Johnny,

      es gibt in PHP durchaus diverse Möglichkeiten, eine Seite ohne Cache laden zu lassen. Jedoch kommt dies auf das jeweilige Cache System an.
      Ich supporte das Plugin nicht mehr, da ich der Meinung bin dass es mittlerweile einige bessere Counter gibt (oder geben sollte) 🙂

      Tut mir leid, dass ich dir hier nicht weiterhelfen kann.

      Viele Grüße

      Florian

  2. Vorab vielen Dank für ein so tolles Plugin. Aber: Es ist sicher gut gemeint. Aber dies Beschreibung für den Einbau dieses Plugins dürfte ruhig etwas ausführlicher sein. Ich meine, wer kennt sich schon in sämtlichen Theme aus und weiß, in welche Datei und wo es dort eingesetzt wird. Ich z.B. nutze das Theme RAINDROPS. Und darin finde ich mich überhaupt nicht zurecht und wüsste nun wirklich nicht, wo man das dort einbaut. AUsserdem kommen alle Nasen lang neue Updates für die Themes raus und man muss solch eine Funktion ständig wieder einfügen. Ein Plugin, das sich quasi selbst einfügt, wäre da sicher leichter zu handhaben. Vor allem für Dummies wie mich 😉

    LG; Dragon

    1. Das geht doch 🙂 Du brauchst ja nur davor und danach einen Text hinschreiben. So kann jeder schreiben was er will.
      z.B.

      Der Beitrag wurde <?php echo wpp_show_counter(); ?> mal gelesen

  3. Hallo Florian,

    danke für das Plugins. Habe lange nach was einfachem gesucht, und dann bin ich auf dieses Plugins für Worpress gestoßen. Endlich mal etwas einfach erklärt und promt eingebaut. Ich habe es so realisiert:

    index.php

    Gelesen

    MfG

    Olaf Uecker

  4. Hallo, das plugin funktioniert toll, aber was mir auffällt ist, das der Counter bei jeder Post-Revision zurückgesetzt wird, mir ist das aufgefallen nachdem ich einen Rechtschreibfehler korrigiert habe. Ist es nicht möglich es an den Titel der Seite zu binden, die ändert sich anders als die Revisionen nicht.

  5. Super Plugin! Ich nutze es schon länger für meine Web Projekte.
    Nun habe ich jedoch die Frage ob man auch alle Views zusammen sehen kann.

    Sprich einmal mit den einzelnen Titeln und Views und einmal die Gesamtanzahl der Views.

    LG,
    Julian

  6. achso sorry, das war die letzte Version die ich probiert hatte … hier der Code der bei mir auch net funzt:

    <a href="“ „title=“”Der Beitrag wurde gelesen”>

    ist da evtl. ein semikolon zu wenig? bitte mach ein Happy End für mich aus der Geschichte 🙂

  7. sorry wenns jetzt nervt … aber aus dem Original eingefügtem Code in meinem Post zuvor wird hier nun der Counter versucht anzuzeigen … bei mir nicht ?

    ich versteh nicht weshalb bei mir der Counter an anderer Stelle funkioniert und im Titel nicht …

    (und der Tag hat sogut angefangen 🙁

    1. Kann nur raten, aber ich vermute dass du einen Fehler machst bzw. der Tag ausserhalb der Loop eingefügt wird. Müsste ich sehen damit ich was dazu sagen kann.

  8. Danke Dir … dann komme ich doch lieber gleich zur nächsten Frage: der Counter im Titel funktioniert leider mit dem Code nicht:

    <a href="” title=”Der Beitrag wurde gelesen”>

    wenn ich nun in den Original-Zeilen den wichtigsten Teil einfüge wird nur „“ angezeigt ,

    <a href="“ title=““ rel=“bookmark“>

    gemeint sind die Original Zeilen im Template twenty.eleven > content.php > ca. Zeile 20

    kannst du mir / uns an dieser Stelle weiterhelfen :-/

    grüße, Marcel

  9. ich nochmal (bitte den ersten Beitrag editieren oder löschen) = es funktioniert genauso einfach: einfach die Spalte manuell am besten über mysqldumper anlegen

    gruß

    1. Gerade wollte ich dir schreiben. Schön dass es nun klappt. Ich lasse den Beitrag stehen, vielleicht haben andere ja das selbe „Problem“. Danke fürs Feedback.

  10. Hallo, ersteinmal vielen herzlichen Dank für das Plugin. Mein Problem: im Plugin „multilingual-press“ wird in der Datenbank in den Tabellen z.Bsp. für Deutsch wp_2_posts und für Englisch wp_3_posts keine neue Spalte „wpp_count“ angelegt … in der Tabelle wp_posts läuft es natürlich wie beschreiben … kannst Du mir / uns weiterhelfen wie es händisch angelegt werden kann oder reicht es aus einfach die Spalte in der Tabelle zu erstellen ??

    gruß, Marcel

  11. Hallo,
    die Anleitung scheint nichts für Anfänger zu sein, schade? denn:

    (Der Artikelcounter kann dann im Template eingebaut werden und wird automatisch angezeigt:

    )

    ????? WO SOLL DAS SEIN? Wie heist diese datei und in welchem Ordner ist er dirn?

    oder es wird ein Tag für den Counter direkt in den Artikel gesetzt:

    [ wpp_count ]

    ???? Welcher Tag? Ich dachte damit sind die Schlagwörter gemeint die man benutzen kann, wenn man will?

    tolle idee, aber für mich bis jetzt nicht einsetzbar, installiert/aktiviert ist es, aber optisch ist alles wie bisher ich kann keinen Zähler finden.

    LG

    1. Es ist eigentlich soweit alles erklärt. Du musst entweder den Tag [ wpp_count ] direkt in den Artikel setzen oder die andere Funktion in der Templatedatei z.B. unter Design > Editor > „Dein Theme“ > index.php beim Titel des Artikels bzw. wo du ben willst, eintragen.

      z.B.
      < h1 >< a href="“ title=“Der Beitrag wurde gelesen“>< /a >< /h1 >

      Das ganze natürlich ohne die Leerzeichen bei h1 und a

  12. Hallo und viele Dank für das nützliche Plugin. Genau das was ich gesucht habe. Leider stürzt das Plugin bei mir immer ab sobald ich den „Hack“ bzgl. Zählung der eingeloggten User anwenden will.

    Ich mache es so wie oben beschrieben. Die Zeile finden und durch die beiden unteren Zeilen (wie oben beschrieben) ersetzen. Das klappt leider nicht. :/

    Haben Sie einen Rat wodran es liegen könnte?

    Vielen Dank

    1. Kann ich leider so nicht nachvollziehen. Hast du evtl zum Schluss das } vergessen?

      Es muss folgendermaßen heissen:
      if ( is_user_logged_in() ) { } else {
      $wpdb->query("UPDATE $wpdb->posts SET `wpp_count` = '$newvalue' WHERE `ID` = '$id'");
      }

  13. Habe selbst das Problem gelöst danke. Nur löst es bei mir Probleme und die ganze Seite stürzt ab wenn ich Plugin deinstalliere 😉
    Habe das Problem durch einen kleinen CSS Trick gelöst.

    Grüße,
    Alex (Funzt alles)

    1. Würde mich interessieren wie das aussieht/gehen soll. Man gibt hier was aus und formatiert nichts. Ich benutze es z.B. im Title Tag des Titels.

  14. Hallo, wenn ich das Plugin nach Fehlern prüfe, verursacht es bei mir einige die vom Validator angezeigt werden. Kannst du mir behilflich sein? Wie kann ich es in fügen? | Aufrufe

  15. Ich möchte allerdings, von jedem Artikel, der gepostet wird, die Views gezählt werden, das heißt ich möchte nicht immer unter jedem geschriebenen Artikel eine bestimmte Zeile einfügen, sondern einmal eine Einstellung vornehmen und die erzeugt dann ein automatisches (einmaliges) Erscheinen des Satzes „Der Artikel wurde XY Mal gelesen.“ auf jeder Seite.
    Das ist der Code der single.php Seite bei WordPress:

    < ? php

    get_header();
    if (have_posts())
    {
    while (have_posts())
    {
    art_page_navi();
    art_post();
    comments_template();
    }
    art_page_navi();
    } else {
    art_post_box(
    __('Not Found', 'kubrick'),
    '‘ . __(‚Sorry, but you are looking for something that isn’t here.‘, ‚kubrick‘) . “
    . „\r\n“ . art_get_search());
    }

    get_footer();

    Wo muss da die Zeile eingefügt werden?

    Gruß Kevin

  16. Hi Florian,
    ich war richtig begeistert von deiner App, das war genau das, was ich gesucht habe. Ich weiß allerdings nicht genau, wo ich diese Zeile einfügen soll:

    Dieser Artikel wurde Mal gelesen

    Oben steht was was von WordPress > Design > Editor > Einzelner Artikel (single.php). Ich habe es an allen Stellen probiert einzufügen, funktioniert hat es jedoch nicht. Dazu soll gesagt sein: Der Satz „Dieser Artikel wurde schon XY Mal gelesen“ soll nur ein einziges Mal ganz unten am Ende des Artikels (unter dem „Gefällt mir“-Button) erscheinen, nicht mehrmals auf der gleichen Seite.
    Gruß Kevin

    1. Hallo Kevin,

      vielen Dank. Du brauchst eigentlich nur folgende Zeile unter deinem Gefällt-mir Button schreiben:

      Der Beitrag wurde gelesen

      So wie es im Artikel beschrieben ist.

      @Marcus: Leider kann ich dir hier nicht genau sagen was los ist, aber ich denke es ist keine Spalte für den Zähler angelegt in der Datenbank. Sorry

  17. Ich erhalte leider die folgende Fehlermeldungen:

    Warning: in_array() expects parameter 2 to be array, null given in /wp-post-counter/wp-post-counter.php on line 37

    Warning: array_push() expects parameter 1 to be array, null given in /wp-post-counter/wp-post-counter.php on line 39

    Was kann die Ursache sein??

  18. Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at /home/ddlyouor/public_html/blog/wp-content/plugins/wp-post-counter/wp-post-counter.php:1) in /home/ddlyouor/public_html/blog/wp-content/plugins/wp-post-counter/wp-post-counter.php on line 2

    was bedeutet das ?

  19. Hallo!
    Danke für das tolle Plugin. Ich habe jedoch noch ein kleines Problem.
    Nachdem ich es hochgeladen habe und aktiviert habe. Was muss ich danach machen?

    Wohin muss ich “ “ kopieren, also in welche Datei?
    Ich hatte Sie in die Single.php getan, dann stand aber lediglich eine „1“ über dem Post ohne z.b. „x Views“ o.ä.
    Besten Dank und weiter so!

    1. Du schreibst in die entsprechende Templatedatei (z.B. Single) das was du haben willst. Also z.B.

      Der Beitrag wurde mal gelesen

      Gruß

    1. Hallo und Danke für das Lob,

      du hast einen kleinen grammatikalischen Fehler bei der Ausgabe, weil du folgendes bei den Artikeln stehen hast

      Dieser Artikel wurde seit bereits: 3 gelesen

      Gruß Florian

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert