Count per Day
"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.
If you get PHP inet_pton errors, use this patched geoip.inc file.
Copy the unzipped file to
Copy the unzipped file to
wp-content/count-per-day-geoip
.- Dashboard
- Widget
- Worldmap
- Visitors
- Notes
- Settings
Count per Day 3.5.7
Contributors: Tom BraiderTags: 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: www.tomsdimension.de/postcards
Visit Counter, shows reads and visitors per page, visitors today, yesterday, last week, last months and other statistics.
Description
- 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: www.tomsdimension.de/wp-plugins/count-per-day
- Donate: www.tomsdimension.de/postcards
Languages, Translators
- nearly up to date translations:
- Bulgarian - joro - www.joro711.com
- Chinese - Siyuan Tang - mopbear.com
- Finnish - Jani Alha - www.wysiwyg.fi
- German - Tom - www.tomsdimension.de
- Japanese - Juno Hayami - juno.main.jp/blog
- Persian - Mahmoud Zooroofchi - www.zooroofchi.ir
- Portuguese - Beto Ribeiro - www.sevenarts.com.br
- Russian - Ilya Pshenichny - iluhis.com
- Serbian - Diana - wpdiscounts.com
- older, incomplete translations:
- Azerbaijani - Bohdan Zograf - whttp://www.webhostingrating.com
- Belarusian - Alexander Alexandrov - www.designcontest.com
- Dansk - Jonas Thomsen - jonasthomsen.com
- Dutch NL - Rene - wpwebshop.com
- Espanol - Juan Carlos del Río -
- France - Bjork - www.habbzone.fr
- Greek - Essetai_Imar - www.elliniki-grothia.com
- Hindi - Love Chandel - outshinesolutions.com
- Italian - Gianni Diurno - gidibao.net
- Lithuanian - Nata Strazda - www.webhostinghub.com
- Norwegian - Stein Ivar Johnsen - iDyrøy.no
- Polish - LeXuS - intrakardial.de
- Romanian - Alexander Ovsov - webhostinggeeks.com
- Swedish - Magnus Suther - www.magnussuther.se
- Turkish - Emrullah Tahir Ekmekçi - emrullahekmekci.com.tr
- Ukrainian - Iflexion design - iflexion.com
Installation
- unzip plugin directory into the
/wp-content/plugins/
directory - 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.
Configuration
See the Options Page and check the default values.
Frequently Asked Questions
Screenshots
Arbitrary section
Shortcodes
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_READS_THIS]
[CPD_READS_TOTAL]
[CPD_READS_TODAY]
[CPD_READS_YESTERDAY]
[CPD_READS_LAST_WEEK]
[CPD_READS_THIS_MONTH]
[CPD_READS_PER_MONTH]
[CPD_VISITORS_TOTAL]
[CPD_VISITORS_ONLINE]
[CPD_VISITORS_TODAY]
[CPD_VISITORS_YESTERDAY]
[CPD_VISITORS_LAST_WEEK]
[CPD_VISITORS_THIS_MONTH]
[CPD_VISITORS_PER_MONTH]
[CPD_VISITORS_PER_DAY]
[CPD_VISITORS_PER_POST]
[CPD_FIRST_COUNT]
[CPD_POSTS_ON_DAY]
[CPD_CLIENTS]
[CPD_COUNTRIES]
[CPD_COUNTRIES_USERS]
[CPD_REFERERS]
[CPD_FLOTCHART]
[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
- date (optional), format: year-month-day, default = today
- limit (optional): max records to show, default = all
- width and height: size, default 500x340 px
- what: map content - reads|visitors|online, default reads
- days (optional), show last x days
- limit (optional): show x most searched strings
You can place these functions in your template.
Use
<?php
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
count()
- 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 http://www.maxmind.com
Changelog
3.5.7
- Bugfix: security fixes in notes, options
3.5.6
- Bugfix: check/block stored bad referrers
3.5.5
- Bugfix: security fixes in export, referrer and mass bot functions
3.5.4
- Bugfix: check for IPv6 compatibility on settings page
3.5.3
- Bugfix: undefined function cpd_inet_pton (once again)
3.5.2
- Bugfix: undefined function cpd_inet_pton
3.5.1
- back in WordPress plugin repository
- Bugfix: Worldmap shortcode
3.5
- 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
3.4.1
- Bugfix: Security fix backup download
3.4
- 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
3.3
- 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 www.leaseweblabs.com/2014/01/popular-posts-count-per-day-wordpress-plugin
- New: Part of IP adresses in Bot List,
192.168
will block all visitors from192.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
3.2.10
- 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
3.2.9
- Bugfix: PHP without IPv6 support
- New Language: Persian, thanks to Mahmoud Zooroofchi
- Hint: use "update old counter data" to repair the unknown countries
3.2.8
- Bugfix: inet_pton for windows php < 5.3
- Bugfix: GeoIP support for online world map
3.2.7
- Bugfix: GeoIP functionality
3.2.6
- 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
3.2.5
- Bugfix: compatibility fix for WordPress 3.5
3.2.4
- Bugfix: security fix, check user permissions
3.2.3
- Bugfix: security fix, XSS in search words, thanks to www.n0lab.com/?p=163
3.2.2
- New: counter column in custom post lists
- Bugfix: errors in search words
- Bugfix: wrong counts in posts lists
3.2.1
- Bugfix: massbot delete error
- Bugfix: search words array sometimes corrupt
- Bugfix: add collected data to reads per post, thanks to Suzakura Karin yumeneko.pmfan.jp / is.gd/VWNyLq
- 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
3.2
- 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
3.1.1
- Bugfix: important fixes in map.php and download.php, thanks to 6scan.com
3.1
- 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
3.0
- 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
forgetMostVisitedPosts
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
Dann verstehe ich aber folgende Datenschutzerklärung nicht, welche auf vielen Webpräsenzen zu finden ist:
Count per Day Statistik
Diese Website benutzt die Count per Day Statistik. Das WordPress Plugin „Count per Day“ speichert sogenannte „Cookies“ auf Ihrem Computer, die eine Auswertung Ihrer Nutzung dieser Website ermöglichen. Die durch den Cookie dabei anfallenden Daten über Ihre Nutzung der Website werden anonymisiert an einen Server von Count per Day in den USA übertragen und dort gespeichert. Die Daten sind so anonymisiert, dass sie nicht mehr einem Anschluss zuordenbar sind. Die anfallenden Daten werden durch Count per Day gegebenenfalls an Dritte übertragen, sofern dies gesetzlich vorgeschrieben ist, oder sofern Count per Day die Daten durch Dritte verarbeiten lässt. In keinem Fall wird Ihre IP-Adresse mit anderen Daten von Count per Day in Verbindung gebracht. Die Installation des Cookies können Sie durch die entsprechenden Einstellungen in Ihrem Webbrowser unterbinden.
Ist einfach falsch. Es gibt keine Count per Day Server in den USA oder sonstwo. Die GeoIP-Datenbank liegt im WordPress-Verzeichnis. Noch lokaler gehts wohl kaum. Das sieht sehr nach einem Baukasten aus wo man als Statistikwerkzeug "Count per Day" eingegeben hat.
Außerdem, der Code ist offen. Sieh einfach nach.
@Tom
dann vielen Dank für Deine klärenden Worte. Wir werden unsere Datenschutzerklärung entsprechend verfassen.
Gruß - Martin-
Erstmal Kompliment für den schönen Counter und das freundliche Zurverfügungstellen! Ich habe mit Shortcodes auch die wesentlichen Informationen auf meine Webseite, d.h. ins Frontend bekommen, und nun sieht es super aus!
Eine Frage hätte ich allerdings noch: Standardmäßig werden ja Zugriffe auf alle Seiten einer Domain erfasst (z.B. durch [CPD_VISITORS_TOTAL]). Nun würde ich gern aber Zugriffe auf
a) eine bestimmte Seite und
b) auf eine bestimmte Seitengruppe
getrennt erfassen und per Shortcode ausgeben. Gibt es also so etwas wie
für a) [CPD_VISITORS_TOTAL_nur_von_ID_123] oder
für b) [CPD_VISITORS_TOTAL_von_ID_123+ID124+ID125]?
Außerdem sollte die gezählte Summe einen Startwert addieren, denn das Projekt hat schon unter einem anderen Counter Zugriffszahlen gehabt, die ich gerne mitnehmen möchte.
Ich befürchte, dass es solche Shortcodes nicht gibt, denn in der readme.txt sind solche Codes nicht gelistet. Dafür habe ich dort unter "Functions" etwas gesehen , was vielleicht mein Problem löst: "$page (optional) PostID". Das klingt ziemlich richtig, allerdings habe ich keine Ahnung, was eine Function ist bzw. wie ich sie einbauen soll. Allein, dass es was mit php zu tun hat, ist mir bekannt. Ich habe deine Site dann mal nach "PostID" durchsucht, aber nichts verstanden ...
LG und vielen Dank
Matta
Der Shortcode für die aktuelle Seite wäre
[CPD_READS_THIS]
.Eine Gruppierung gibt es so direkt nicht. Da musst du tatsächlich zur Funktion greifen und selbst addieren.
Versuch es damit (ungetestet):
Das ganze müsste dann aber direkt in eine Template-Datei z.B.
sidebar.php
und noch formatiert werden.Super, danke!! Es scheint (in einem php-fähigen Widget) zu funktionieren, wenngleich die Zahl momentan noch 0 ist.
Was ich allerdings nicht richtig verstanden habe, ist, was gezählt wird. $count_per_day sind vermutlich die eindeutigen IPs eines Tages? Dann wäre das das function-Äquivalent für den shortcode [CPD_VISITORS_TODAY], nur eben für eine Gruppe von Seiten?
Wie wäre dann die Variable
a) für die Besucher, die aktuell online sind und
b) für die Besucher gesamt, einschließlich derer, die ich ja aus den Vorjahren dazuaddieren möchte? Kann ich da dann für die Null in $sum = 0 einen Ausgangswert setzen?
Danke und LG
Hi Tom,
jetzt drückt mich ein anderes Problem: Die Google Search Console bemängelt 187 fehlerhafte Seiten, die angeblich für den Googlebot nicht erreichbar sind und als Antwort nur HTTP 403 zurückgeben, wobei als Fehler immer angezeigt wird:
wp-admin/?page=cpd_ajax&f=count&cpage=2104&time= ( nur die cpage-Nr. variiert)
Offensichtlich ist der Counter falsch installiert oder hat selbst einen Fehler. Die Installation erfolgte mit einem Shortcode mittels des Plugins "PHP-Everywhere", wobei der Code so aussieht:
show('', '', false, false, $id);
echo $sum.' Besucher auf den Seiten der Gruppe';
}
?>
Nachtrag: So sieht der Code natürlich nicht aus - beim Speichern wird der Code zerlegt. Aber ist genau so gewesen, wie du ihn oben (bei dem Streifen-Layout) geschrieben hast.
Weißt du Rat?
Vielen Dank. Matta
Die "Seite"
wp-admin/?page=cpd_ajax
dient nur dazu Widget-Daten zu aktualisiseren wenn WordPress einen Cache benutzt. Der Google-Bot hat dort auch gar nichts zu suchen. Deshalb gebe ich bei falschem Aufruf den Fehler 403 zurück. Das ist so schon richtig.Läuft flüssig, wie gewollt gut!

Hallo,
ich habe auch eine Frage bezüglich der Einbindung des Plugins in meine Datenschutzerklärung. Kannst du mir sagen, welche Daten das Plugin genau erfasst? Browser und Herkunftsland ist klar, das wird mir ja angezeigt. Ich nehme an, die IP gehört auch dazu. Werden diese Daten aber in anonymisierter Form gespeichert?
Viele Grüße,
Stephie
Wenn es eingestellt ist, wird die letzte Stelle der IPs geändert. Dadurch können die Besucher weiterhin unterschieden, aber nicht direkt einem Anschluss zugeordnet werden. Ansonsten werden, wie richtig bemerkt, Browser und Land gespeichert. Aber auch wieder keinem Schluss zugeordnet.
Das alles passiert lokal, es werden keine Daten an Dritte weitergegeben.
Hey,
ist es möglich IP Adresse nachträglich zu anonymisieren? Ich sehe noch einige Bots aufgelistet im Backend mit der vollen IP Adresse, obwohl ich die Option zum Anonymisieren aktiviert habe.
Direkt im Plugin geht das nicht. Die IPs werden nur beim speichern bearbeitet.
Es wird aber immer eine volle IP angezeigt. Nur die letzte Stelle entspricht nicht dem Original.