Count per Day


  • count reads and visitors
  • shows reads per page
  • shows visitors today, yesterday, last week, last months and other statistics on dashboard
  • shows country of your visitors
  • you can show these statistics on frontend per widget or shortcodes too
  • Plugin:
  • Donate:

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

Languages, Translators

  • nearly up to date translations:
  • Bulgarian – joro –
  • Chinese – Siyuan Tang –
  • Finnish – Jani Alha –
  • German – Tom –
  • Japanese – Juno Hayami –
  • Persian – Mahmoud Zooroofchi –
  • Portuguese – Beto Ribeiro –
  • Russian – Ilya Pshenichny –
  • Serbian – Diana –

  • older, incomplete translations:

  • Azerbaijani – Bohdan Zograf –
  • Belarusian – Alexander Alexandrov –
  • Dansk – Jonas Thomsen –
  • Dutch NL – Rene –
  • Espanol – Juan Carlos del Río –
  • France – Bjork –
  • Greek – Essetai_Imar –
  • Hindi – Love Chandel –
  • Italian – Gianni Diurno –
  • Lithuanian – Nata Strazda –
  • Norwegian – Stein Ivar Johnsen – http://iDyrø
  • Polish – LeXuS –
  • Romanian – Alexander Ovsov –
  • Swedish – Magnus Suther –
  • Turkish – Emrullah Tahir Ekmekçi –
  • Ukrainian – Iflexion design –

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 500×340 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.
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


  • Options
  • Widget sample
  • Statistics on Count-per-Day Dashboard


Need Help? Find Bug?

read and write comments on


very good


Very good plugin, but in 4.7.1 wordpress a blank page appear when installing the geoip plugin, otherwise that's outstanding.

Read all 25 reviews



  • 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


  • Bugfix: security fix, XSS in search words, thanks to


  • 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

Contributors & Developers

This is open source software. The following people have contributed to this plugin.


Browse the code