Here’s a very simple plugin for WordPress that keeps track of view counts of individual pages. It is not intended to be a complete statistics solution. Rather, the main purpose is to provide something for those empty spots in your site layout.
Here is a sample graph (page views for this site):
For a better example, see the site stats page.
- Keeps day-by-day based page view stats using the database
- Outputs a clean histogram
- Includes easy functions for those who are better at blogging than programming
Copy viewcount.php in /wp-content/plugins and enable it in WordPress options. Enter the path of the directory you want to the graph cache to be located in the options page (Options > Viewcount). The plugin will then start counting page views.
Note: the plugin taps into the_content(). Pages that do not use it will not update the stats! See below for a workaround.
To display statistics, there are a few functions.
get_view_histogram($page=-1, $days=60, $barwidth=10, $barheight=16, $barspacing=1, $barcolor='#000000', $backgroundcolor='#ffffff', $web20=16)
get_view_histogram() returns a URL to a PNG image.
If $page is unset or is -1, the data will be the combined page views for all pages. $web20 specifies the height of a “Web 2.0” style reflection under the bars. The rest of the parameters should be easy enough to figure out.
You can use the function like this to display the statistics for the current post (or page):
<img src="<?php echo get_view_histogram($post->ID); ?>" />
You can also display a top list of page views with get_view_count_list().
get_view_count_list($limit=10, $days=30, $before='<li>', $after='</li>', $excludeid='', $type='')
$excludeid is a comma-separated list of post IDs (note:the list is not escaped so do not use any values in there that come straight off $_GET or so!). $type is either “post” or “page”, empty string returns both.
You can exclude the page that is currently viewed like this (shows the top five pages from the last 30 days excluding post ID $post->ID):
To display a Popularity Contest style percentage (the percentage of traffic a post has compared to other posts), use get_popularity($page=-1,$days=30,$format=’percent’). if $page equals to -1, the current page ID will be used automatically. $format can be either ‘percent‘ or ‘float‘ — ‘percent‘ returns a string with the percent sign, ‘float‘ returns a floating point number between 0.0 and 1.0. The following will display a percentage of page views for the current page during the last 30 days.
<?php echo get_popularity(); ?>
To display all time statistics, you can simply do this:
<?php echo get_popularity(-1,99999); ?>
This will display all time statistics, unless your blog has been online for more than 274 years.
To get the list of most viewed pages, use the function get_top_pages($days=30,$limit=10,$type=’views’). $type is either ‘views’ or ‘popularity’.
You can request more functions!
You need the GD library installed for PHP.
I created the plugin to see how that is done. Therefore, crap code ensues (see the warning about excluding posts above).
The plugin will count views for pages and single posts only. Page views from users who are logged in (e.g. you) will not be logged.
The plugin taps into the_content() to count views. You can use vc_update_counter($id) to manually update the page views (or, you can be creative and count very different stuff with it – just make sure the ID is not in use by real pages).
In case you think the graph is wrong: the bar height is normalized. This is just so there is interesting variation in the height.