How to track post / page views without a plugin using post meta in WordPress?
Add the following code to functions.php (in your theme)
/******************************************************************
* Get the number of views for a specific page / post
******************************************************************/
function getPostViews($postID) {
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
if($count=='') {
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '1');
return "1";
} // if($count=='')
return $count;
} // getPostViews()
/******************************************************************
* Set the number of views for a specific page / post
* Call this function in single.php: setPostViews(get_the_ID());
******************************************************************/
function setPostViews($postID) {
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
if($count=='') {
$count = 1;
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '1');
} else {
$count++;
update_post_meta($postID, $count_key, $count);
} // if($count=='')
} // setPostViews()
/******************************************************************
* Add a column ('Views') to the WP-Admin Posts page (optional)
******************************************************************/
add_filter('manage_posts_columns', 'posts_column_views');
add_action('manage_posts_custom_column', 'posts_custom_column_views',5,2);
function posts_column_views($defaults) {
$defaults['post_views'] = __('Views');
return $defaults;
} // posts_column_views()
function posts_custom_column_views($column_name, $id) {
if($column_name === 'post_views') {
echo getPostViews(get_the_ID());
} // if($column_name === 'post_views')
} // posts_custom_column_views()
/******************************************************************
* Add a column ('Views') to the WP-Admin Pages page (optional)
******************************************************************/
add_filter('manage_pages_columns', 'page_column_views');
add_action('manage_pages_custom_column', 'page_custom_column_views',5,2);
function page_column_views($defaults) {
$defaults['page_views'] = __('Views');
return $defaults;
} // page_column_views()
function page_custom_column_views($column_name, $id) {
if($column_name === 'page_views') {
echo getPostViews(get_the_ID());
} // if($column_name === 'page_views')
} // page_custom_column_views()
Resource:
https://www.isitwp.com/track-post-views-without-a-plugin-using-post-meta/