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/