Toms Welt


Count per Day

3.534 Kommentare |
I am no longer the developer of the plugin.
Please contact

"Count per Day" ist ein Besucherzähler für WordPress.

Die Seitenaufrufe werden pro Artikel gespeichert. Dabei wird als "Reload-Sperre" nur ein Aufruf pro IP-Adresse und Tag berücksichtigt.

Beispiel: Wenn ein Leser 5 Artikel ansieht, sind alle "1 mal gelesen", aber der Gesamtzähler erkennt, dass es nur ein Besucher war.
Die Aufrufe können pro Artikel angezeigt werden. Im Admin-Bereich gibt es weitere Statistiken.


Count per Day 3.5.7

Contributors: Tom Braider
Tags: counter, count, posts, visits, reads, dashboard, widget, shortcode
Requires at least: 3.0
Tested up to: 4.8
Stable tag: 3.5.7
License: GPLv2
Donate link:

Visit Counter, shows reads and visitors per page, visitors today, yesterday, last week, last months and other statistics.


"Count per Day" counts 1 visit per IP per day. So any reload of the page do not increment the counter.

Languages, Translators


  1. unzip plugin directory into the /wp-content/plugins/ directory
  2. activate the plugin through the Plugins menu in WordPress

The activation will create or update a table wp_cpd_counter.

The Visitors-per-Day function use 7 days as default. So don't surprise about a wrong value in the first week.


See the Options Page and check the default values.

Frequently Asked Questions

Need Help? Find Bug?

read and write comments on


  1.">" title="1. Statistics on Count-per-Day Dashboard" />
    1. Statistics on Count-per-Day Dashboard
  2.">" title="2. Options" />
    2. Options
  3.">" title="3. Widget sample" />
    3. Widget sample

Arbitrary section


You can use these shortcodes in the content of your posts to show a number or list
or in your theme files while adding e.g. <?php echo do_shortcode("[THE_SHORTCODE]"); ?>.
To use the shortcodes within a text widget you have to add add_filter("widget_text", "do_shortcode"); to the functions.php of your theme.

[CPD_MOST_VISITED_POSTS limit="5" days="30" postsonly="1" posttypes="posts,pages"]
  • limit (optional): max records to show, default = all
  • days (optional), show last x days
  • postsonly (optional), 1 = don't show index pages
  • posttypes (optional), show this posttypes only, sets postsonly to 1
[CPD_POSTS_ON_DAY date="2010-10-06" limit="3"]
  • date (optional), format: year-month-day, default = today
  • limit (optional): max records to show, default = all
[CPD_MAP width="500" height="340" what="reads"]
  • width and height: size, default 500x340 px
  • what: map content - reads|visitors|online, default reads
[CPD_SEARCHES days="14" limit="20"]
  • days (optional), show last x days
  • limit (optional): show x most searched strings

You can place these functions in your template.
global $count_per_day;
if(method_exists($count_per_day,"show")) echo $count_per_day->getReadsAll(true);

to check if plugin is activated.

show( $before, $after, $show, $count, $page )'
  • $before = text before number e.g. <p> (default "")
  • $after = text after number e.g. reads</p> (default " reads")
  • $show = true/false, "echo" complete string or "return" number only (default true)
  • $count = true/false, false will not count the reads (default true)
  • $page (optional) PostID
  • only count reads, without any output
  • show call it
getFirstCount( $return )
  • shows date of first count
  • $return: 0 echo, 1 return output
getUserPerDay( $days, $return )
  • shows average number of visitors per day of the last $days days
  • default on dashboard (see it with mouse over number) = "Latest Counts - Days" in options
  • $return: 0 echo, 1 return output
getReadsAll( $return )
  • shows number of total reads
  • $return: 0 echo, 1 return output
getReadsToday( $return )
  • shows number of reads today
  • $return: 0 echo, 1 return output
getReadsYesterday( $return )
  • shows number of reads yesterday
  • $return: 0 echo, 1 return output
getReadsLastWeek( $return )
  • shows number of reads last week (7 days)
  • $return: 0 echo, 1 return output
getReadsThisMonth( $return )
  • shows number of reads current month
  • $return: 0 echo, 1 return output
getReadsPerMonth( $return )
  • lists number of reads per month
  • $return: 0 echo, 1 return output
getUserAll( $return )
  • shows number of total visitors
  • $return: 0 echo, 1 return output
getUserOnline( $frontend, $country, $return )
  • shows number of visitors just online
  • $frontend: 1 no link to map
  • $country: 0 number, 1 country list
  • $return: 0 echo, 1 return output
getUserToday( $return )
  • shows number of visitors today
  • $return: 0 echo, 1 return output
getUserYesterday( $return )
  • shows number of visitors yesterday
  • $return: 0 echo, 1 return output
getUserLastWeek( $return )
  • shows number of visitors last week (7 days)
  • $return: 0 echo, 1 return output
getUserThisMonth( $return )
  • shows number of visitors current month
  • $return: 0 echo, 1 return output
getUserPerMonth( $frontend, $return )
  • lists number of visitors per month
  • $frontend: 1 no links
  • $return: 0 echo, 1 return output
getUserPerPost( $limit, $frontend, $return )
  • lists $limit number of posts, -1: all, 0: get option from DB, x: number
  • $frontend: 1 no links
  • $return: 0 echo, 1 return output
getMostVisitedPosts( $days, $limits, $frontend, $postsonly, $return, $posttypes )
  • shows a list with the most visited posts in the last days
  • $days = days to calc (last days), 0: get option from DB
  • $limit = count of posts (last posts), 0: get option from DB
  • $frontend: 1 no links
  • $postsonly: 0 show, 1 don't show categories and taxonomies
  • $return: 0 echo, 1 return output
  • $posttypes: comma separated list of post types, default: empty to show all
getVisitedPostsOnDay( $date, $limit, $show_form, $show_notes, $frontend, $return )
  • shows visited pages at given day
  • $date day in MySQL date format yyyy-mm-dd, 0 today
  • $limit count of posts
  • $show_form show form for date selection, default on, in frontend set it to 0
  • $show_notes show button to add notes in form, default on, in frontend set it to 0
  • $frontend: 1 no links
  • $return: 0 echo, 1 return output
getClients( $return )
  • shows visits per client/browser in percent
  • $return: 0 echo, 1 return output
getReferers( $limit, $return, $days )
  • lists top $limit referrers of the last $days days, 0: get option from DB, x: number
  • $return: 0 echo, 1 return output
getMostVisitedPostIDs( $days, $limit, $cats, $return_array )
  • $days last x days, default = 365
  • $limit return max. x posts, default = 10
  • $cats IDs of categories to filter, array or number
  • $return_array true returns an array with Post-ID, title and count, false returns comma separated list of Post-IDs
function getMap( $what, $width, $height, $min )
  • gets a world map
  • $what visitors|reads|online
  • $width size in px
  • $height size in px
  • $min : 1 disable title, legend and zoombar
getDayWithMostReads( $return )
  • shows day with most Reads
  • $return: 0 echo, 1 return output
getDayWithMostVisitors( $return )
  • shows day with most Visitors
  • $return: 0 echo, 1 return output
  • With GeoIP you can associate your visitors to an country using the IP address.
  • On options page you can update you current visits. This take a while! The Script checks 100 IP addresses at once an reload itself until less then 100 addresses left. Click the update button to check the rest.
  • If the rest remains greater than 0 the IP address is not in GeoIP database (accuracy 99.5%).
  • You can update the GeoIP database from time to time to get new IP data. This necessitates write permissions to wp-content/count-per-day-geoip directory.
  • If the automatically update don't work download GeoIPv6.dat.gz, extract and rename it to GeoIP.dat and load it to the count-per-day-geoip directory.
  • More information about GeoIP on



  • Bugfix: security fixes in notes, options


  • Bugfix: check/block stored bad referrers


  • Bugfix: security fixes in export, referrer and mass bot functions


  • Bugfix: check for IPv6 compatibility on settings page


  • Bugfix: undefined function cpd_inet_pton (once again)


  • Bugfix: undefined function cpd_inet_pton


  • back in WordPress plugin repository
  • Bugfix: Worldmap shortcode


  • New: PHP 7 compatibility (mysqli)
  • New: GeoIP part is now available as addon (installation with 1 click, see the settings page), because WordPress hates non GPL code in its plugin repository (after several years...)
  • Bugfix: possible daylight saving time problem in chart (hopefully)
  • Bugfix: reset function now deletes also collections


  • Bugfix: Security fix backup download


  • New: limit the length of client and referer to reduce database size and eliminate MySql strict mode errors
  • New: exclude countries you not want to count
  • New: Flash free World map
  • New: Flag of Malawi
  • Bugfix: language support without WPLANG constant
  • Bugfix: get temp directory


  • New: List of most industrious Visitors
  • New: Export data as CSV file
  • New: count given post types only
  • New: Shortcode CPD_FLOTCHART to show the big chart
  • New: Popular Posts Widget, thanks to Maurits van der Schee
  • New: Part of IP adresses in Bot List, 192.168 will block all visitors from 192.168.x.x
  • New language: Chinese, thanks to Siyuan Tang
  • Bugfix: counting of cached pages
  • Bugfix: cleaning database, delete entries per IP in bot list
  • some little fixes


  • Bugfix: Plugin dir path fixed
  • Bugfix: CSS path fixed
  • Bugfix: search word now case insensitive
  • Bugfix: Translation of widget titles
  • New: world map of current visitors
  • New: check referer agains bot list
  • New: delete clients and referers of older entries


  • Bugfix: PHP without IPv6 support
  • New Language: Persian, thanks to Mahmoud Zooroofchi
  • Hint: use "update old counter data" to repair the unknown countries


  • Bugfix: inet_pton for windows php < 5.3
  • Bugfix: GeoIP support for online world map


  • Bugfix: GeoIP functionality


  • New: posts only parameters for [CPD_MOST_VISITED_POSTS]
  • New: don't count password protected posts without password
  • New: translate widget titles if possible
  • New: flags of Cambodia, Nigeria and Sudan
  • Bugfix: massbot post list has not show all post
  • Bugfix: security fix, XSS
  • Bugfix: problems while adding widgets
  • Bugfix: start session only in backend
  • Bugfix: empty database query


  • Bugfix: compatibility fix for WordPress 3.5


  • Bugfix: security fix, check user permissions



  • New: counter column in custom post lists
  • Bugfix: errors in search words
  • Bugfix: wrong counts in posts lists


  • Bugfix: massbot delete error
  • Bugfix: search words array sometimes corrupt
  • Bugfix: add collected data to reads per post, thanks to Suzakura Karin /
  • Language update: Japanese, thanks to Juno Hayami
  • Language update: Portuguese, thanks to Beto Ribeiro
  • Language update: Russian, thanks to Ilya Pshenichny
  • Language update: Bulgarian, thanks to joro


  • New: save search words
  • New shortcode: CPD_COUNTRIES_USERS
  • New: flags for Bahamas, Mongolia, Cameroon and Kazakhstan
  • Bugfix: can't move widgets
  • Bugfix: visitors per post list
  • Bugfix: "Clean Database" deleted collection too
  • Bugfix: browser summary Chrome/Safari fixed
  • Bugfix: get real remote IP address, not local server
  • Bugfix: security fixes
  • Change: create collection functions optimized
  • New language: Romanian, thanks to Alexander Ovsov
  • New language: Hindi, thanks to Love Chandel
  • New language: Finnish, thanks to Jani Alha
  • Language update: Ukrainain, thanks to Iflexion design


  • Bugfix: important fixes in map.php and download.php, thanks to


  • New: memory check before backup to avoid "out of memory" error
  • New: create temporary backup files for download only
  • New: delete backup files in wp-content on settings page
  • Bugfix: all posts shows 1 read in posts list
  • Bugfix: clean database shows 0 entries deleted


  • New: use now default WordPress database functions to be compatible to e.g. multi-db plugins
  • New: backup your counter data
  • New: collect entries of counter table per month and per post to reduce the database and speed up the statistics
  • New: functions and shortcodes [CPD_DAY_MOST_READS] [CPD_DAY_MOST_USERS] to shows days with most reads/visitors
  • New: option to cut referrer on "?" to not store query strings
  • New: parameter $postsonly for getMostVisitedPosts function to list single posts and pages only
  • New: flags for Moldavia and Nepal
  • New language: Norwegian, thanks to Stein Ivar Johnsen and Tore Johnny Bråtveit
  • New language: Azerbaijani, thanks to Bohdan Zograf
  • New language: Japanese, thanks to Juno Hayami
  • Bugfix: visitors per month list
  • Change: some function parameters
  • Change: little memory optimizing
  • Change: visitors currently online and notes will now managed per option, without seperate tables in database
  • Change: design updated
  • Change: old bar charts deleted
created by Readme Parser

RSS-Feed 3.534 Kommentare

Seiten: « 1 2 3 ... 136 137 138 139 140 141 142 143 144 145 146 »
  1. Karen Gautier Karen Gautier sagt:

    utilizzo il suo plugin dal 2012, purtroppo ho dovuto riconfigurare da 0 il sito web andando a perdere tutti i dati riguardo i movimenti delle visite.
    prima di cancellare tutto ho eseguito un bake-up del suo plugin, come posso importare i vecchi dati?

    la ringrazio molto.

    • Tom Tom sagt:

      Upload the backup to your wp-content directory.
      Go to CpD Settings -> Tools -> Backup.
      Use the "Restore" arrow to import the backup to the database.

  2. Frank Rindermann Frank Rindermann sagt:

    Hallo Tom,

    ich hatte hier vor ein paar Tagen ein Problem mit extrem hohen Seitenabrufen an einem Tag (statt ca. 300 Seiten über 8.000 Seiten) geschildert und um Hilfe gebeten.

    Jetzt kann ich diesen Kommentar nicht mal finden ?!


    • Tom Tom sagt:

      Das war ja auch kein Kommentar sondern eine Nachricht über das Kontaktformular.
      Zum Problem: CpD zählt nur und ruft keine Seiten auf. Die Zugriffe waren also da, nennt man Spam und/oder Bots. Die Einträge kann man in den Massenbots löschen. Google scheint sie bereits gefiltert zu haben.

  3. Mikal Mikal sagt:


    After updating to latest version and enabling geo-ip addon webpage became "white". I used ftp to delete the count-per-day folder and reinstalled the plugin. I got the error message while trying to activate the plugin: Fatal error: Cannot redeclare geoip_country_code_by_name() in [.....myfolder..]/count-per-day-geoip/ on line 1602

    I tried to install the patched file in count-per-day-geoip folder but nothing helped.

  4. Familie Chat Familie Chat sagt:

    Hi i think it need a new update for the Danish version, i like to make that how can i help ??

  5. Angel Angel sagt:

    Thanks for this convenient widget! u1F44F.svgz u1F44F.svgz u1F44F.svgz

    I just have one little question, when it shows the number of visitors as a widget on sidebar, is it possible to make them not align justify?

    Thanks a lot!

    Best regards,

    • Tom Tom sagt:

      This is the code in counter.css.
      .cpd_front_list li b { /* values */
      float: right;
      Delete or change the lines (after every CpD update)
      or add some code to your style.css in your theme directory to overwrite it.
      e.g. .cpd_front_list li b { float: none !important; }

  6. Thomas Thomas sagt:

    Is there a way to show the total last month visitors by shortcode?


    Ich würde gerne per Shortcode einbinden wieviele Besucher im letzten Monat auf der Seite waren. Ist das irgendwie möglich?

  7. Norman Norman sagt:

    Ich habe eine Frage bezgl der Zahlen in CountPerDay und Google Analytics. Warum zeigt GA für z.B. Juli bei Nutzer 991 | Sitzungen 1.319 an und in CountPerDay steht Nutzer 2690 | Sitzungen 4.777. Die Unterscheide sind extrem groß. Ist dies normal? Was zählt denn CountPerDay mehr, wir verstehen es nicht.

    • Tom Tom sagt:

      2 Zähler - 2 Filter - 2 Ergebnisse.
      Wahrscheinlich filtert GA direkt mehr bekannte Spammer und Bots raus. CpD hat nur die erweiterbare Bot Liste.

  8. Frank Frank sagt:

    Ich war in letzter Zeit sehr beschäftigt und hatte keinen genaueren Blick auf den Counter geworfen.
    Aber mir war letzte Woche aufgefallen, dass irgendwas nicht stimmen konnte.

    Der Zähler war genau bei "42000 Seitenaufrufen gesamt" stehen geblieben.
    Diese Zahl war schön einprägsam, als ich gerade einen neuen Post schrieb und auf den Zähler schaute, der heute noch genau der Selbe war. O_O
    Und jetzt sah ich auch, daß es die letzten Statistiken in 2015-04 gab.

    Der entdeckte Grund: "Auto-Counter" war deaktiviert (cpd_autocount)

    Es wäre wunderschön, wenn es im Dashboard eine Fehlermeldung gäbe, wenn der Zähler nichts mehr zählt. (z.B. "keine" oder zu weniger Besucher seit einer Woche)

    Wäre es möglich die Apache-Logs zu nutzen, um damit die letzten Monate zu rekonstruieren?
    Das wäre auch ein super Feature, für die Erstinstallation des Plugins, um rückwirkend ein paar erste Zählerstände und Statistiken zu bekommen.

    Im Dashboard-Plugin steht auch aktuell nur die Gesamtzahl.
    Da würde eine kleine gemischte Grafik "Besucher und Seitenaufrufe der letzten 12 Wochen" schön rein passen. So klein, wie die Grafik für "Besucher pro Monat" in den CPD-Statistiken.
    Statt "Besucher pro Tag" würden "Besucher der letzten 24 Stunden" und/oder "Besucher der letzten 168 Stunden (7 Tage)" bestimmt informativer sein. (unabhängig, ob man früh oder abends drauf schaut)

    PS: Wem ist auch aufgefallen, dass CPD bald ein "Jahr" alt ist?
    Version 3.6.5 u1F609.svgz

    • Tom Tom sagt:

      Wenn man den Auto-Counter deaktiviert ist das eine Einstellung und kein Fehler. Eine Meldung würde also nur verwirren.
      Auf die Apache-Logs haben die wenigsten Benutzer zugriff. Außerdem wäre das Parsen und Auswerten recht aufwendig und fehleranfällig. Dafür gibt es andere Tools.
      Das Dashboard-Plugin ist nur ein Link zur Statistik. Es ist ein einziger Klick um alle Daten zu sehen.
      "Besucher pro Tag" sind nicht die letzten 24 Stunden sondern der aktuelle Tag. "Count per Day" speichert nur das Datum, keine Uhrzeit. Daher wäre eine Stundenangabe falsch.

      • Frank Frank sagt:

        Ich hatte das nur nie deaktiviert, darum wäre ein Hinweis/Warnung schon praktisch gewesen.
        Weiß leider auch nicht, wie es deaktiviert wurde.
        Und keine Ahnung, ob es Zufall ist, daß es sich genau bei so einer schön runden Zahl abschaltete. (war zumindestens parktisch ... wer weiß wann es sonst erst aufgefallen wäre)

        Schade, dass CPD nur den Tag kennt, die letzten 24 Stunden wären halt "interessanter", oder "Durchschnittlich die letzten 7 Tage".
        "Heute" gibt ja früh morgens eine ganz kleine Besucherzahl aus, da "Heute" noch lange nicht vorbei ist und wenn man abends schaut, ist die Zahl natürlich viel größer.

  9. andrea andrea sagt:

    Ciao, mi spieghereste come attivare la funzione con cui visualizzare la provenienza geografica dei visitatori del mio sito? Grazie in anticipo!

    N.B. Utente poco esperto.

  10. Pascal Pascal sagt:


    wir benutzen Dein Plugin in einer Terminal-Server-Umgebung, haben aber nur sehr wenige Besucher. Ist es möglich, dass das Plugin nicht nach IP sondern Cookie zählt o.ä.`


    • Tom Tom sagt:

      CpD nutzt keine Cookies, nur IP, Datum und PostID. Werden die Besucher vielleicht über (Proxy-)Server geleitet und erhalten so alle die gleiche IP?

      • Pascal Pascal sagt:

        Danke für Dein Feedback! Dadurch, dass die Zugriffe über die Terminalserver kommen, gibt es maximal 10 IP-Adressen für mehrere hundert Personen. Dementsprechend werden die Ergebnisse verfälscht.

        Gibt es eine Möglichkeit, das zu umgehen?

        Vielen Dank

        • Tom Tom sagt:

          Normalerweise steht die IP in der Servervariable REMOTE_ADDR. Das ist dann aber ggf. der Terminalserver.
          Dieser sollte dann auch die Variable HTTP_X_FORWARDED_FOR mit der ursprünglichen IP setzen. Zumindest war das in den mir bekannten Fällen so.
          Wenn HTTP_X_FORWARDED_FOR vorhanden ist, benutze ich auch diese IP.

Seiten: « 1 2 3 ... 136 137 138 139 140 141 142 143 144 145 146 »