{"id":316407,"date":"2026-05-24T03:09:18","date_gmt":"2026-05-24T03:09:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/post-and-reading-time-counter\/"},"modified":"2026-05-24T03:08:40","modified_gmt":"2026-05-24T03:08:40","slug":"webxperthub-post-views-reading-time","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/webxperthub-post-views-reading-time\/","author":23503550,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"Webxperthub Post Views & Reading Time","header_author":"Iftiar Hossain","header_description":"Track post views and reading time from visitors. Display engagement metrics in the admin dashboard and post list columns.","assets_banners_color":"765548","last_updated":"2026-05-24 03:08:40","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/webxperthub-post-views-reading-time\/","header_author_uri":"https:\/\/iftiarhossain.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":29,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"iftiarhossain","date":"2026-05-24 03:08:40"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3545752,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3545752,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3545752,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3545752,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[262246],"plugin_tags":[232,307,5990,27629,550],"plugin_category":[36],"plugin_contributors":[264156],"plugin_business_model":[],"class_list":["post-316407","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-analytics","plugin_tags-engagement","plugin_tags-post-views","plugin_tags-reading-time","plugin_tags-tracking","plugin_category-analytics","plugin_contributors-iftiarhossain","plugin_committers-iftiarhossain"],"banners":{"banner":"https:\/\/ps.w.org\/webxperthub-post-views-reading-time\/assets\/banner-772x250.png?rev=3545752","banner_2x":"https:\/\/ps.w.org\/webxperthub-post-views-reading-time\/assets\/banner-1544x500.png?rev=3545752","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/webxperthub-post-views-reading-time\/assets\/icon-128x128.png?rev=3545752","icon_2x":"https:\/\/ps.w.org\/webxperthub-post-views-reading-time\/assets\/icon-256x256.png?rev=3545752","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Webxperthub Post Views &amp; Reading Time is a lightweight WordPress plugin that automatically tracks how many times each post is viewed and measures the total reading time accumulated from all visitors. Perfect for bloggers, content creators, and site owners who want to understand their audience engagement at a glance.<\/p>\n\n<p><strong>Key Features:<\/strong><\/p>\n\n<ul>\n<li><strong>View Tracking<\/strong> - Automatically count the number of unique sessions viewing each post with intelligent bounce filtering<\/li>\n<li><strong>Reading Time Analytics<\/strong> - Measure actual time visitors spend reading your posts<\/li>\n<li><strong>Admin Dashboard Widget<\/strong> - Beautiful analytics widget showing total views, posts, and cumulative reading time<\/li>\n<li><strong>Post List Columns<\/strong> - Display views and reading time directly in the post list for quick reference<\/li>\n<li><strong>Smart User Filtering<\/strong> - Automatically excludes administrators, editors, authors, and contributors from view counts to track real visitor engagement<\/li>\n<li><strong>Session-based Counting<\/strong> - Prevents artificially inflating counts by tracking views per session, not per page load<\/li>\n<li><strong>Security First<\/strong> - Built with WordPress security standards including nonce verification, input sanitization, and proper output escaping<\/li>\n<li><strong>Lightweight &amp; Efficient<\/strong> - Minimal database footprint with optimized AJAX requests and prepared statements<\/li>\n<li><strong>Zero Configuration<\/strong> - Works automatically after activation, no settings to configure<\/li>\n<li><strong>Responsive Design<\/strong> - Dashboard widget looks great on all screen sizes<\/li>\n<\/ul>\n\n<h3>How It Works<\/h3>\n\n<p><strong>View Tracking Process:<\/strong>\n1. When a visitor loads a post, JavaScript waits 2 seconds (bounce filter) before sending a tracking request\n2. An AJAX request is sent to your WordPress backend\n3. The view count for that post is incremented in the post meta\n4. SessionStorage records that this post was counted in the current session to prevent duplicates<\/p>\n\n<p><strong>Reading Time Tracking Process:<\/strong>\n1. JavaScript monitors how long a visitor spends on the page\n2. Timing begins after the initial 2-second bounce delay\n3. Timing ends when the visitor leaves the page or switches browser tabs\n4. Only intervals of 3+ seconds are counted (minimum threshold)\n5. A maximum of 30-minute intervals are recorded (filters outliers like tabs left open)\n6. The accumulated time is added to the post's total reading time meta<\/p>\n\n<p><strong>Dashboard Widget:<\/strong>\nThe admin dashboard displays:\n- Total number of published posts\n- Sum of all views across all posts\n- Cumulative reading time from all visitors (formatted as \"X hours Y minutes\")<\/p>\n\n<p><strong>Post List Columns:<\/strong>\nTwo new columns in the Posts list show:\n- Views: Total view count for each post\n- Read Time: Total accumulated reading time (click column header to sort)<\/p>\n\n<h3>Technical Details<\/h3>\n\n<p><strong>Database:<\/strong>\n- <code>_webxperthub_pvrt_view_count<\/code> \u2014 Stores the total view count for each post\n- <code>_webxperthub_pvrt_reading_time<\/code> \u2014 Stores total reading time in seconds for each post\n- Uses standard WordPress post meta (no custom tables)<\/p>\n\n<p><strong>Security:<\/strong>\n- All AJAX endpoints verify nonces for CSRF protection\n- User input is sanitized and validated before use\n- Output is properly escaped for display\n- User roles are verified to exclude staff accounts\n- Only published posts are tracked<\/p>\n\n<p><strong>Performance:<\/strong>\n- Efficient prepared statements for all database queries\n- Asynchronous AJAX requests do not block user interaction\n- SessionStorage prevents redundant database calls\n- Minimal CSS and JavaScript payload\n- No external API calls or third-party services<\/p>\n\n<h3>Support<\/h3>\n\n<p>For support, feature requests, or bug reports, please visit the plugin's WordPress.org support forum. When posting, please include:<\/p>\n\n<ol>\n<li>A clear description of your issue<\/li>\n<li>Your WordPress version and PHP version<\/li>\n<li>A list of your currently active plugins<\/li>\n<li>Any error messages from your browser console (press F12)<\/li>\n<\/ol>\n\n<h3>Credits<\/h3>\n\n<p>Developed by Iftiar Hossain \u2014 Webxperthub<\/p>\n\n<h3>License<\/h3>\n\n<p>This plugin is licensed under the GPL-2.0-or-later license. You are free to use, modify, and distribute this plugin under the terms of the GNU General Public License.<\/p>\n\n<p>For more information about the GPL, visit: https:\/\/www.gnu.org\/licenses\/gpl-2.0.html<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Log in to your WordPress admin panel<\/li>\n<li>Navigate to <strong>Plugins &gt; Add New<\/strong><\/li>\n<li>Search for <strong>\"Webxperthub Post Views\"<\/strong><\/li>\n<li>Click <strong>Install Now<\/strong> and then <strong>Activate<\/strong><\/li>\n<li>Visit your <strong>Dashboard<\/strong> to see the new analytics widget<\/li>\n<li>Go to <strong>Posts<\/strong> to see the new Views and Read Time columns<\/li>\n<\/ol>\n\n<p><strong>Manual Installation:<\/strong><\/p>\n\n<ol>\n<li>Download the plugin ZIP from WordPress.org<\/li>\n<li>Upload the <code>webxperthub-post-views-reading-time<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress<\/li>\n<li>The plugin will start tracking immediately \u2014 no configuration required<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20track%20admin%20views%3F\"><h3>Does this plugin track admin views?<\/h3><\/dt>\n<dd><p>No. By design, administrators, editors, authors, and contributors are excluded from view counts. Only real visitor views are counted, giving you accurate engagement metrics.<\/p><\/dd>\n<dt id=\"how%20accurate%20is%20the%20reading%20time%3F\"><h3>How accurate is the reading time?<\/h3><\/dt>\n<dd><p>Reading time is measured from actual visitor activity on your posts. It begins after a 2-second initial delay (to filter out bounces) and stops when visitors leave the page or switch tabs. Times are capped at 30 minutes to exclude outliers.<\/p><\/dd>\n<dt id=\"will%20this%20slow%20down%20my%20site%3F\"><h3>Will this slow down my site?<\/h3><\/dt>\n<dd><p>No. The plugin uses efficient AJAX requests and minimal database queries. All tracking is done asynchronously with no noticeable impact on site performance.<\/p><\/dd>\n<dt id=\"how%20is%20the%20data%20stored%3F\"><h3>How is the data stored?<\/h3><\/dt>\n<dd><p>All data is stored using WordPress standard post meta. No custom database tables are created, keeping your database clean and easy to manage.<\/p><\/dd>\n<dt id=\"can%20i%20reset%20the%20view%20counts%3F\"><h3>Can I reset the view counts?<\/h3><\/dt>\n<dd><p>Currently, view and reading time data cannot be reset through the plugin interface. You can manually remove the data through phpMyAdmin by deleting the post meta keys <code>_webxperthub_pvrt_view_count<\/code> and <code>_webxperthub_pvrt_reading_time<\/code>.<\/p><\/dd>\n<dt id=\"what%20browsers%20are%20supported%3F\"><h3>What browsers are supported?<\/h3><\/dt>\n<dd><p>The plugin works on all modern browsers including Chrome, Firefox, Safari, Edge, and Opera. JavaScript must be enabled for tracking to work.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20use%20cookies%3F\"><h3>Does this plugin use cookies?<\/h3><\/dt>\n<dd><p>The plugin uses browser sessionStorage (not cookies) to prevent double-counting views within the same session. SessionStorage is cleared automatically when the browser closes.<\/p><\/dd>\n<dt id=\"is%20my%20visitor%20data%20private%3F\"><h3>Is my visitor data private?<\/h3><\/dt>\n<dd><p>Yes. All data is stored locally in your WordPress database. No information is sent to external servers or third parties.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>View tracking with bounce filtering<\/li>\n<li>Reading time analytics with min\/max thresholds<\/li>\n<li>Admin dashboard widget with engagement metrics<\/li>\n<li>Post list columns for views and reading time<\/li>\n<li>Smart user role filtering<\/li>\n<li>Security-first implementation with nonce verification<\/li>\n<\/ul>","raw_excerpt":"Track post views and accumulate total reading time from visitors. Display engagement metrics in your admin dashboard and post list columns.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/316407","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=316407"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/iftiarhossain"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=316407"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=316407"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=316407"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=316407"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=316407"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=316407"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}