| @@ -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.4 | |
| 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,135 +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.4 = | |
| 177 | += 4.5.1 = | |
| 176 | 178 | |
| 177 | -*Release Date - TBD* | |
| 179 | +*Release Date - 19 September 2026* | |
| 178 | 180 | |
| 179 | -* Features: | |
| 180 | - * New "Tracking method" setting under Settings » Counter/Tracker » Tracker settings: choose between Funnel tracking (default; views are buffered and merged into the count tables every few minutes) and Legacy tracking (views are written directly to the count tables on every visit, as in versions before 4.3). Switch to Legacy tracking if view counts are not updating on your site, e.g. when WP-Cron is disabled or unreliable. Note that Legacy tracking does not populate the visits log table. The Fast and High-traffic trackers respect this setting; regenerate the High-traffic config file after changing it. | |
| 181 | - | |
| 182 | 181 | * Fixed: |
| 183 | - * Custom period label ("Daily" vs "Custom (N days)") on the Dashboard widget, Popular Posts submenu, and post list Views column now matches the data actually shown, instead of always following the site-wide Custom period setting. | |
| 184 | - * Post list Views column, and its sort order, now counts today only instead of the full Custom period range. | |
| 182 | + * Security: Hardened thumbnail dimension handling to prevent stored Cross-Site Scripting by an Author-level user via block attributes. | |
| 185 | 183 | |
| 186 | -= 4.3.2 = | |
| 184 | += 4.5.0 = | |
| 187 | 185 | |
| 188 | -*Release Date - 8 July 2026* | |
| 186 | +Release date: 7 September 2026 | |
| 187 | +Release post: https://webberzone.com/announcements/top-10-v4-5/ | |
| 189 | 188 | |
| 190 | -* Improvements: | |
| 191 | - * Dynamic post counts now load more reliably and are faster in modern browsers. | |
| 192 | - * 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. | |
| 189 | +**Added** | |
| 193 | 190 | |
| 194 | -= 4.3.1 = | |
| 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. | |
| 195 | 195 | |
| 196 | -*Release Date - 6 June 2026* | |
| 196 | +**Changed** | |
| 197 | 197 | |
| 198 | -* Improvements: | |
| 199 | - * Aggregation cron now runs every 2 minutes instead of 5 minutes for faster count updates. | |
| 200 | - * Sync Funnel now shows distinct error messages for an empty funnel, a lock conflict, and database failures (including the actual database error). | |
| 201 | - * Dashboard chart now formats large numbers with K/M abbreviations (e.g. 15,437 → 15.4K) and auto-hides overlapping bar labels. | |
| 202 | - * "Recreate Database Tables" in Tools now also recreates the visits funnel and visits log tables. | |
| 203 | - * [Pro] `wp top10 db recreate-tables` now accepts `--table=funnel` and `--table=log` in addition to `overall`, `daily`, and `all`. | |
| 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. | |
| 204 | 201 | |
| 205 | -* Fixed: | |
| 206 | - * 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. | |
| 207 | - * 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. | |
| 208 | - * "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. | |
| 202 | +**Security** | |
| 209 | 203 | |
| 210 | -= 4.3.0 = | |
| 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. | |
| 211 | 206 | |
| 212 | -*Release Date - 28 May 2026* | |
| 207 | +**Fixed** | |
| 213 | 208 | |
| 214 | -* [Release announcement](https://webberzone.com/announcements/top-10-v4-3-0/) | |
| 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. | |
| 215 | 220 | |
| 216 | -* New: | |
| 217 | - * Buffered visit tracking: page views are queued in a funnel table and aggregated every 5 minutes, reducing write contention on busy sites. | |
| 218 | - * [Pro] RSS/Atom feed views are now counted. Enable under Counter settings > Track feed views. | |
| 219 | - * [Pro] Dashboard At a Glance widget now shows views for the current hour and today. | |
| 220 | - * [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`. | |
| 221 | += Earlier versions = | |
| 221 | 222 | |
| 222 | -* Improvements: | |
| 223 | - * Scheduled maintenance deletes old daily rows in batches to prevent timeouts on large databases. | |
| 224 | - * New index on the daily table speeds up maintenance queries. Apply it to existing installs via Recreate Primary Key under Tools. | |
| 223 | +For the changelog of earlier versions, please refer to the [releases page on GitHub](https://github.com/WebberZone/top-10/releases). | |
| 225 | 224 | |
| 226 | -* Fixed: | |
| 227 | - * Cache setting was referencing the wrong key, preventing posts from ever being cached. | |
| 228 | - * Database version was recorded before upgrade routines ran, causing upgrades to be silently skipped on re-activation. | |
| 229 | - * Daily queries now work on MySQL servers with ONLY_FULL_GROUP_BY enabled. | |
| 230 | - * Posts with identical counts now display in a consistent order when paginated. | |
| 231 | - * Daily counts now use the site's configured timezone instead of server time. | |
| 232 | - * Dashboard "Total visits" now matches the chart total rather than summing only the top 20 posts. | |
| 233 | - * Popular posts ordering no longer overridden by Post Types Order and similar plugins. | |
| 234 | - * Deactivation now clears both cron jobs and sets the settings option to not autoload. | |
| 235 | - * Removed incorrect `wpmu_drop_tables` filter that tried to drop network-wide tables on site deletion. | |
| 225 | +== Upgrade Notice == | |
| 236 | 226 | |
| 237 | -= 4.2.3 = | |
| 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. | |
| 238 | 229 | |
| 239 | -* Security: | |
| 240 | - * Hardened Settings API and metabox output escaping. | |
| 241 | - | |
| 242 | -* Improvements: | |
| 243 | - * Updated Freemius SDK to version 2.13.1. | |
| 244 | - * Updated Settings API assets and Tom Select handling. | |
| 245 | - * Refreshed translations and generated assets. | |
| 246 | - | |
| 247 | -* Fixes: | |
| 248 | - * Fixed metabox screen handling when `get_current_screen()` is unavailable. | |
| 249 | - * Fixed admin notices package tags. | |
| 250 | - | |
| 251 | -= 4.2.2 = | |
| 252 | - | |
| 253 | -* Modifications: | |
| 254 | - * Taxonomy Suggest script removed from Settings API. Metabox also uses Tom Select for the lookup of the category field in CRP Pro. | |
| 255 | - | |
| 256 | -* Fixes: | |
| 257 | - * CSS improvements for left-thumbs and grid-thumbs styles. | |
| 258 | - | |
| 259 | -= 4.2.1 = | |
| 260 | - | |
| 261 | -* Security: | |
| 262 | - * Fixed REST API permission checks to prevent unauthorized exposure of post passwords in edit context. | |
| 263 | - | |
| 264 | -* Fixes: | |
| 265 | - * Fixed a bug with the "Clear cache" button in the Tools page. | |
| 266 | - * Fixed thumbnail location restrictions to properly support Grid thumbnails style in addition to Left thumbnails. | |
| 267 | - * Improved JavaScript logic for style-based thumbnail location validation with better error handling and fallback mechanisms. | |
| 268 | - | |
| 269 | -= 4.2.0 = | |
| 270 | - | |
| 271 | -Release post: [https://webberzone.com/announcements/top-10-v4-2-0/](https://webberzone.com/announcements/top-10-v4-2-0/) | |
| 272 | - | |
| 273 | -* New: | |
| 274 | - * Settings wizard to guide initial configuration and review existing settings | |
| 275 | - * Network-wide dashboard with aggregated multisite statistics | |
| 276 | - * [Pro] High-traffic tracking mode with status validation panel | |
| 277 | - * [Pro] Copy settings between multisite network sites | |
| 278 | - * [Pro] Compact “Top 10 Views Overview” dashboard widget | |
| 279 | - * [Pro] Option to disable the Admin Bar menu | |
| 280 | - * [Pro] Maintenance setting to override data retention period | |
| 281 | - | |
| 282 | -* Improvements: | |
| 283 | - * [Pro] Improved dashboard chart bar click-through to open the Popular Posts screen filtered to that day | |
| 284 | - * Updated Settings API to version 2.7.1 | |
| 285 | - * Improved media handler with recursion protection and more robust processing | |
| 286 | - * Media Handler now supports the FIFU WordPress plugin for featured image detection. | |
| 287 | - * Improved Tools page statistics display and caching | |
| 288 | - * Wrapped Import/Export and Tools sections in postbox containers for consistent UI | |
| 289 | - | |
| 290 | -* Developer / Internal: | |
| 291 | - * Refactored popular posts queries for improved performance and WordPress VIP compatibility | |
| 292 | - * Updated caching behaviour for dynamic exclusions | |
| 293 | - * Refactored database operations into a dedicated Database class | |
| 294 | - * Updated Freemius SDK to version 2.13.0 | |
| 295 | - | |
| 296 | -* Fixes: | |
| 297 | - * Fixed `Top_Ten_Query` handling of the `date_query` argument | |
| 298 | - * Fixed activation redirects on single-site installs within multisite networks | |
| 299 | - * Fixed `exclude_current_post` behaviour when caching is enabled | |
| 300 | - * Fixed live-edit count updates in multisite statistics | |
| 301 | - | |
| 302 | -== Upgrade Notice == | |
| 303 | - | |
| 304 | -= 4.3.0 = | |
| 305 | -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. | |