| @@ -1,11 +1,11 @@ | ||
| 1 | 1 | === WebberZone Top 10 — Popular Posts === |
| 2 | 2 | Tags: popular posts, post views, page views, most viewed posts, popular posts widget, trending posts, post views counter, multisite, block, shortcode |
| 3 | 3 | Contributors: webberzone, ajay |
| 4 | 4 | Donate link: https://wzn.io/donate-wz |
| 5 | -Stable tag: 4.3.2 | |
| 6 | -Requires at least: 6.6 | |
| 7 | -Tested up to: 7.0 | |
| 5 | +Stable tag: 4.5.1 | |
| 6 | +Requires at least: 6.8 | |
| 7 | +Tested up to: 7.1 | |
| 8 | 8 | Requires PHP: 7.4 |
| 9 | 9 | License: GPLv2 or later |
| 10 | 10 | |
| 11 | 11 | Track post views and page views, and display popular posts and trending content on your WordPress site. |
| @@ -42,10 +42,12 @@ | ||
| 42 | 42 | = Features in Top 10 Pro = |
| 43 | 43 | |
| 44 | 44 | * __Enhanced Tracking and Performance__ |
| 45 | 45 | * __Fast and High-Traffic Trackers__: Alternative tracking methods for improved performance on busy sites |
| 46 | + * __Site-wide Tracking__: Track views for the front page, posts page, archives, and searches in addition to individual content | |
| 46 | 47 | * __Query Optimisation__: MySQL `MAX_EXECUTION_TIME` directive to prevent long-running queries, configurable via settings and the `top_ten_query_max_execution_time` filter |
| 47 | 48 | * __Data Retention Override__: Customizable data retention period (default 180 days via `TOP_TEN_STORE_DATA`) |
| 49 | + * __Lazy Loading__: Render popular posts lists via JavaScript only when they are about to scroll into view, so full-page caching plugins can serve a page without baking in a live popular-posts query. Works with content, shortcodes, widgets, and the Popular Posts block; disable per instance with the `lazy_load` shortcode/block attribute | |
| 48 | 50 | |
| 49 | 51 | * __Advanced Blocks and Widgets__ |
| 50 | 52 | * __Top 10 Query Block__: Query and display popular posts directly from the block or site editor |
| 51 | 53 | * __Enhanced Top 10 Featured Image Block__: Support for multiple image sources with fallbacks |
| @@ -171,124 +173,59 @@ | ||
| 171 | 173 | [Report a security vulnerability.](https://patchstack.com/database/vdp/top-10) |
| 172 | 174 | |
| 173 | 175 | == Changelog == |
| 174 | 176 | |
| 175 | -= 4.3.2 = | |
| 177 | += 4.5.1 = | |
| 176 | 178 | |
| 177 | -*Release Date - 8 July 2026* | |
| 179 | +*Release Date - 19 September 2026* | |
| 178 | 180 | |
| 179 | -* Improvements: | |
| 180 | - * Dynamic post counts now load more reliably and are faster in modern browsers. | |
| 181 | - * Enhanced time range labeling: Interface now dynamically shows "Daily" for 1-day periods or "Custom (N days)" for longer periods, making the UI more accurate based on actual settings. | |
| 182 | - | |
| 183 | -= 4.3.1 = | |
| 184 | - | |
| 185 | -*Release Date - 6 June 2026* | |
| 186 | - | |
| 187 | -* Improvements: | |
| 188 | - * Aggregation cron now runs every 2 minutes instead of 5 minutes for faster count updates. | |
| 189 | - * Sync Funnel now shows distinct error messages for an empty funnel, a lock conflict, and database failures (including the actual database error). | |
| 190 | - * Dashboard chart now formats large numbers with K/M abbreviations (e.g. 15,437 → 15.4K) and auto-hides overlapping bar labels. | |
| 191 | - * "Recreate Database Tables" in Tools now also recreates the visits funnel and visits log tables. | |
| 192 | - * [Pro] `wp top10 db recreate-tables` now accepts `--table=funnel` and `--table=log` in addition to `overall`, `daily`, and `all`. | |
| 193 | - | |
| 194 | 181 | * Fixed: |
| 195 | - * Sync Funnel on WordPress Playground (SQLite) incorrectly reported "another aggregation is in progress" due to unreliable SQLite detection; the `DATABASE_TYPE` constant is now checked first. | |
| 196 | - * Uninstalling the plugin no longer throws a fatal error when attempting to drop database tables; the path to the uninstaller was resolving one level above the plugin directory. | |
| 197 | - * "Recreate Database Tables" silently left the daily table missing due to a stale static cache in the table-installed check; all four tables are now recreated reliably. | |
| 182 | + * Security: Hardened thumbnail dimension handling to prevent stored Cross-Site Scripting by an Author-level user via block attributes. | |
| 198 | 183 | |
| 199 | -= 4.3.0 = | |
| 184 | += 4.5.0 = | |
| 200 | 185 | |
| 201 | -*Release Date - 28 May 2026* | |
| 186 | +Release date: 7 September 2026 | |
| 187 | +Release post: https://webberzone.com/announcements/top-10-v4-5/ | |
| 202 | 188 | |
| 203 | -* [Release announcement](https://webberzone.com/announcements/top-10-v4-3-0/) | |
| 189 | +**Added** | |
| 204 | 190 | |
| 205 | -* New: | |
| 206 | - * Buffered visit tracking: page views are queued in a funnel table and aggregated every 5 minutes, reducing write contention on busy sites. | |
| 207 | - * [Pro] RSS/Atom feed views are now counted. Enable under Counter settings > Track feed views. | |
| 208 | - * [Pro] Dashboard At a Glance widget now shows views for the current hour and today. | |
| 209 | - * [Pro] Full `wp top10` WP-CLI suite: counts, database, cache, settings, cron, and popular posts commands. All destructive commands support `--dry-run` and `--force`; multisite commands support `--network` and `--blog-id`. | |
| 191 | +* [Pro] Popular Posts elements for Elementor, Bricks Builder and WPBakery Page Builder. | |
| 192 | +* [Pro] Optional site-wide tracking for front pages, posts pages, archives and searches. | |
| 193 | +* [Pro] Reduce Daily Table Size tool to combine older hourly records. | |
| 194 | +* [Pro] `wp top10 db rollup` command for CLI and multisite use. | |
| 210 | 195 | |
| 211 | -* Improvements: | |
| 212 | - * Scheduled maintenance deletes old daily rows in batches to prevent timeouts on large databases. | |
| 213 | - * New index on the daily table speeds up maintenance queries. Apply it to existing installs via Recreate Primary Key under Tools. | |
| 196 | +**Changed** | |
| 214 | 197 | |
| 215 | -* Fixed: | |
| 216 | - * Cache setting was referencing the wrong key, preventing posts from ever being cached. | |
| 217 | - * Database version was recorded before upgrade routines ran, causing upgrades to be silently skipped on re-activation. | |
| 218 | - * Daily queries now work on MySQL servers with ONLY_FULL_GROUP_BY enabled. | |
| 219 | - * Posts with identical counts now display in a consistent order when paginated. | |
| 220 | - * Daily counts now use the site's configured timezone instead of server time. | |
| 221 | - * Dashboard "Total visits" now matches the chart total rather than summing only the top 20 posts. | |
| 222 | - * Popular posts ordering no longer overridden by Post Types Order and similar plugins. | |
| 223 | - * Deactivation now clears both cron jobs and sets the settings option to not autoload. | |
| 224 | - * Removed incorrect `wpmu_drop_tables` filter that tried to drop network-wide tables on site deletion. | |
| 198 | +* Reduced admin overhead on large multisite networks by caching table metadata, probing WPP tables directly and using estimated row counts on the Tools page. | |
| 199 | +* Sped up the dashboard with index-friendly `dp_date` ranges, optimized network popular-post queries and on-demand loading of historical tabs. | |
| 200 | +* Setting defaults are now resolved from a lightweight list instead of building every settings field, so reading an option early in the page load no longer loads translations too early. | |
| 225 | 201 | |
| 226 | -= 4.2.3 = | |
| 202 | +**Security** | |
| 227 | 203 | |
| 228 | -* Security: | |
| 229 | - * Hardened Settings API and metabox output escaping. | |
| 204 | +* Hardened settings sanitization for users without the `unfiltered_html` capability. | |
| 205 | +* Hardened referer and array handling in settings sanitization, and renamed the settings JS globals. | |
| 230 | 206 | |
| 231 | -* Improvements: | |
| 232 | - * Updated Freemius SDK to version 2.13.1. | |
| 233 | - * Updated Settings API assets and Tom Select handling. | |
| 234 | - * Refreshed translations and generated assets. | |
| 207 | +**Fixed** | |
| 235 | 208 | |
| 236 | -* Fixes: | |
| 237 | - * Fixed metabox screen handling when `get_current_screen()` is unavailable. | |
| 238 | - * Fixed admin notices package tags. | |
| 209 | +* View tracking was lost during quick navigation or browser back-button restores. | |
| 210 | +* View counts were recorded for prerendered or initially hidden pages. | |
| 211 | +* Bot views were recorded from cached pages, and views were recorded for browser prefetches, prerenders and direct navigations to tracker URLs. | |
| 212 | +* Tracker scripts did not run when loaded asynchronously after `DOMContentLoaded` had fired. | |
| 213 | +* Generated output cache keys were not discoverable by the Clear Cache tools or the WP-CLI cache flush command. | |
| 214 | +* Settings on a multisite network read another site's values in the same request after a `switch_to_blog()` call, when read via `tptn_get_option()` or the global `$tptn_settings`. | |
| 215 | +* `tptn_get_settings()` returned `false` instead of an empty array when no settings had been saved yet. | |
| 216 | +* Visit data was silently lost in funnel aggregation, and the Fast Tracker raised an undefined array key warning. | |
| 217 | +* Plugin data was deleted when uninstalling one version while its paired free or Pro counterpart was active. | |
| 218 | +* Improved compatibility with PHP 8.6. | |
| 219 | +* [Pro] Daily counts in the `wp top10 popular` command did not respect the selected custom date range. | |
| 239 | 220 | |
| 240 | -= 4.2.2 = | |
| 221 | += Earlier versions = | |
| 241 | 222 | |
| 242 | -* Modifications: | |
| 243 | - * Taxonomy Suggest script removed from Settings API. Metabox also uses Tom Select for the lookup of the category field in CRP Pro. | |
| 223 | +For the changelog of earlier versions, please refer to the [releases page on GitHub](https://github.com/WebberZone/top-10/releases). | |
| 244 | 224 | |
| 245 | -* Fixes: | |
| 246 | - * CSS improvements for left-thumbs and grid-thumbs styles. | |
| 225 | +== Upgrade Notice == | |
| 247 | 226 | |
| 248 | -= 4.2.1 = | |
| 227 | += 4.5.1 = | |
| 228 | +Security release. Fixes a stored Cross-Site Scripting vulnerability that could be exploited by users with Author-level access or above. Update immediately. | |
| 249 | 229 | |
| 250 | -* Security: | |
| 251 | - * Fixed REST API permission checks to prevent unauthorized exposure of post passwords in edit context. | |
| 252 | - | |
| 253 | -* Fixes: | |
| 254 | - * Fixed a bug with the "Clear cache" button in the Tools page. | |
| 255 | - * Fixed thumbnail location restrictions to properly support Grid thumbnails style in addition to Left thumbnails. | |
| 256 | - * Improved JavaScript logic for style-based thumbnail location validation with better error handling and fallback mechanisms. | |
| 257 | - | |
| 258 | -= 4.2.0 = | |
| 259 | - | |
| 260 | -Release post: [https://webberzone.com/announcements/top-10-v4-2-0/](https://webberzone.com/announcements/top-10-v4-2-0/) | |
| 261 | - | |
| 262 | -* New: | |
| 263 | - * Settings wizard to guide initial configuration and review existing settings | |
| 264 | - * Network-wide dashboard with aggregated multisite statistics | |
| 265 | - * [Pro] High-traffic tracking mode with status validation panel | |
| 266 | - * [Pro] Copy settings between multisite network sites | |
| 267 | - * [Pro] Compact “Top 10 Views Overview” dashboard widget | |
| 268 | - * [Pro] Option to disable the Admin Bar menu | |
| 269 | - * [Pro] Maintenance setting to override data retention period | |
| 270 | - | |
| 271 | -* Improvements: | |
| 272 | - * [Pro] Improved dashboard chart bar click-through to open the Popular Posts screen filtered to that day | |
| 273 | - * Updated Settings API to version 2.7.1 | |
| 274 | - * Improved media handler with recursion protection and more robust processing | |
| 275 | - * Media Handler now supports the FIFU WordPress plugin for featured image detection. | |
| 276 | - * Improved Tools page statistics display and caching | |
| 277 | - * Wrapped Import/Export and Tools sections in postbox containers for consistent UI | |
| 278 | - | |
| 279 | -* Developer / Internal: | |
| 280 | - * Refactored popular posts queries for improved performance and WordPress VIP compatibility | |
| 281 | - * Updated caching behaviour for dynamic exclusions | |
| 282 | - * Refactored database operations into a dedicated Database class | |
| 283 | - * Updated Freemius SDK to version 2.13.0 | |
| 284 | - | |
| 285 | -* Fixes: | |
| 286 | - * Fixed `Top_Ten_Query` handling of the `date_query` argument | |
| 287 | - * Fixed activation redirects on single-site installs within multisite networks | |
| 288 | - * Fixed `exclude_current_post` behaviour when caching is enabled | |
| 289 | - * Fixed live-edit count updates in multisite statistics | |
| 290 | - | |
| 291 | -== Upgrade Notice == | |
| 292 | - | |
| 293 | -= 4.3.0 = | |
| 294 | -This release introduces buffered visit tracking with a new funnel table. Existing daily-count table indexes are updated automatically for new installs — existing sites should run "Recreate Primary Key" under Tools > Top 10 to apply the performance improvement. Pro users also get feed view tracking and a full WP-CLI command suite. | |
| 230 | += 4.5.0 = | |
| 231 | +Adds page builder elements, site-wide tracking and a daily-table rollup tool. Fixes several cases of lost view counts and cuts admin overhead on large multisite networks. | |