PluginProbe
WebberZone Top 10 — Popular Posts / 4.5.2
WebberZone Top 10 — Popular Posts v4.5.2
4.5.2 4.5.1 4.5.0 4.4.3 4.4.2 4.4.1 4.4.0 4.3.4 4.3.3 4.3.2 4.3.1 4.3.0 trunk 1.0 1.0.1 1.1 1.2 1.3 1.4 1.4.1 1.5 1.5.1 1.5.2 1.5.3 1.6 All 118 releases
← All changes | readme.txt +58 -126 4.4.0 → 4.5.2 View file →
@@ -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.4.0
6 -Requires at least: 6.6
7 -Tested up to: 7.0
5 +Stable tag: 4.5.2
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,8 +42,9 @@
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`)
48 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
49 50
@@ -85,8 +86,14 @@
85 86 Top 10 does not collect personal visitor data out of the box. Tracking data is stored locally in the `wp_top_ten` and `wp_top_ten_daily` database tables (table prefix may vary).
86 87
87 88 You are responsible for ensuring GDPR compliance on your website.
88 89
90 += Multilingual sites =
91 +
92 +Top 10 works with WPML, Polylang and TranslatePress without additional plugin configuration. WPML and Polylang map popular posts to the language being viewed. TranslatePress translates popular post titles, excerpts and links with the rest of the page, including results delivered through the REST API and lazy-loaded lists in Top 10 Pro.
93 +
94 +Popular post caches are separated by language, preventing cached lists from serving another language's links.
95 +
89 96 = Translations =
90 97
91 98 Top 10 is available for translation on [WordPress.org](https://translate.wordpress.org/projects/wp-plugins/top-10).
92 99 See the [Translator Handbook](https://make.wordpress.org/polyglots/handbook/rosetta/theme-plugin-directories/) to contribute.
@@ -172,153 +179,78 @@
172 179 [Report a security vulnerability.](https://patchstack.com/database/vdp/top-10)
173 180
174 181 == Changelog ==
175 182
176 -= 4.4.0 =
183 += 4.5.2 =
177 184
178 -*Release Date - 22 July 2026*
185 +Release date: 7 October 2026
179 186
180 -* Features:
181 - * New "Features" tab under Settings: turn off plugin features that you do not use and their code will not be loaded at all. You can toggle the Popular Posts and Post Count blocks, popular posts feeds, legacy widgets, Query block, Featured Image block, Popular Posts Pro block, Fast and High-traffic trackers, Pro dashboard widgets, and Popular Authors.
182 - * 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.
183 - * New "Number format style" setting under Settings » Counter/Tracker » Counter settings: choose Abbreviated to display large view counts in a compact form, e.g. 1.2k or 3.4M, wherever counts are displayed. The default remains the full locale-formatted number. It can be overridden per instance with the `number_format_style` shortcode/block attribute, and the suffixes and rounding can be customised via the `tptn_number_format_abbreviations` and `tptn_abbreviate_number_decimals` filters.
184 - * WP-PostRatings integration: new "Show WP-PostRatings rating" setting under Settings » Posts list displays each post's rating next to it in the popular posts list, either as the star rating rendered using the WP-PostRatings plugin's own templates or as the average score number. Off by default and only takes effect when the free WP-PostRatings plugin is active. It can be overridden per instance with the `show_ratings` shortcode/block attribute (`stars` or `score`), and the markup can be customised via the `tptn_ratings` filter.
185 - * [Pro] New "Lazy load popular posts" setting under Settings » General: load popular posts lists via JavaScript only when they are about to enter the viewport instead of rendering them inline, so full-page caching plugins can serve a page without embedding a live popular-posts query. Applies to content, shortcodes, widgets, and the Popular Posts block. Off by default. Override it per instance with the `lazy_load` shortcode/block attribute, e.g. `lazy_load="0"`. Not applied on feeds, admin, AJAX, cron, WP-CLI, or AMP pages.
187 +**Added**
186 188
187 -* Improvements:
188 - * The `[tptn_list]` shortcode now accepts all registered settings as attributes, including newly added settings that are not yet present in the saved settings.
189 - * Redesigned settings page with vertical tab navigation, which is responsive and reverts to horizontal tabs on smaller screens. The settings page now opens on the Features tab.
190 - * New search box above the settings tabs: type to instantly filter settings across all tabs. Matching settings are shown grouped by tab with the search term highlighted in their labels and descriptions, each tab displays a count of its matches, and clicking a tab scrolls to its results. You can also search by the internal setting key, e.g. `cache_time`. A single Save Changes bar replaces the per-tab buttons while searching, and the search is fully keyboard and screen reader accessible.
191 - * Checkbox settings now display as toggle switches.
192 - * Settings that have been changed from their default value are marked with an indicator dot, with a legend below the buttons. The default value is also displayed below each setting's description.
193 - * Admin styles and scripts are now versioned with the plugin version so browsers reliably pick up changes after an update.
194 - * Bot/crawler detection (used by the "Do not track bots" tracker setting) now uses the actively maintained Crawler-Detect library for broader, more accurate coverage, alongside the existing built-in pattern list.
189 +* TranslatePress translation for popular post titles, excerpts and links returned through the REST API.
190 +* REST API endpoints toggle in the Features tab for disabling unused Top 10 API integrations.
191 +* [Pro] TranslatePress support for lazy-loaded popular posts.
192 +* [Pro] Independent lazy-loading module toggle in the Features tab. Disabling REST API endpoints also disables lazy loading.
195 193
196 -* Fixed:
197 - * Admin banner no longer causes a horizontal scrollbar on the plugin's admin pages.
198 - * 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.
199 - * Post list Views column, and its sort order, now counts today only instead of the full Custom period range.
200 - * Left thumbnail style no longer stacks the thumbnail above the text in narrow containers such as sidebar widgets; it now stays side by side unless there genuinely isn't room.
201 - * New "Fix Cron Schedules" tool under Top 10 » Tools to clear and reschedule the maintenance and aggregation cron jobs if they stop running.
202 - * The Tools page and an admin notice now surface WP-Cron scheduling errors (e.g. "The cron event list could not be saved") directly in the dashboard instead of only appearing in the PHP error log.
203 - * [Pro] Fast and High-traffic trackers now respect the "Do not track bots" setting; previously they recorded views for bots and other automated user agents regardless of this setting.
194 +**Changed**
204 195
205 -= 4.3.2 =
196 +* Updated Freemius SDK to 2.13.5.
206 197
207 -*Release Date - 8 July 2026*
198 +**Fixed**
208 199
209 -* Improvements:
210 - * Dynamic post counts now load more reliably and are faster in modern browsers.
211 - * 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.
200 +* Cached popular posts were shared across languages on WPML, Polylang and TranslatePress sites.
201 +* Setup wizard labels were not associated with their input fields.
202 +* Updating settings before any options had been saved could trigger a PHP deprecation warning.
212 203
213 -= 4.3.1 =
204 += 4.5.1 =
214 205
215 -*Release Date - 6 June 2026*
206 +Release date: 19 September 2026
216 207
217 -* Improvements:
218 - * Aggregation cron now runs every 2 minutes instead of 5 minutes for faster count updates.
219 - * Sync Funnel now shows distinct error messages for an empty funnel, a lock conflict, and database failures (including the actual database error).
220 - * Dashboard chart now formats large numbers with K/M abbreviations (e.g. 15,437 → 15.4K) and auto-hides overlapping bar labels.
221 - * "Recreate Database Tables" in Tools now also recreates the visits funnel and visits log tables.
222 - * [Pro] `wp top10 db recreate-tables` now accepts `--table=funnel` and `--table=log` in addition to `overall`, `daily`, and `all`.
208 +**Security**
223 209
224 -* Fixed:
225 - * 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.
226 - * 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.
227 - * "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.
210 +* Hardened thumbnail dimension handling to prevent stored cross-site scripting through block attributes.
228 211
229 -= 4.3.0 =
212 += 4.5.0 =
230 213
231 -*Release Date - 28 May 2026*
214 +Release date: 7 September 2026
215 +Release post: https://webberzone.com/announcements/top-10-v4-5/
232 216
233 -* [Release announcement](https://webberzone.com/announcements/top-10-v4-3-0/)
217 +**Added**
234 218
235 -* New:
236 - * Buffered visit tracking: page views are queued in a funnel table and aggregated every 5 minutes, reducing write contention on busy sites.
237 - * [Pro] RSS/Atom feed views are now counted. Enable under Counter settings > Track feed views.
238 - * [Pro] Dashboard At a Glance widget now shows views for the current hour and today.
239 - * [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`.
219 +* [Pro] Popular Posts elements for Elementor, Bricks Builder and WPBakery Page Builder.
220 +* [Pro] Optional site-wide tracking for front pages, posts pages, archives and searches.
221 +* [Pro] Reduce Daily Table Size tool to combine older hourly records.
222 +* [Pro] `wp top10 db rollup` command for CLI and multisite use.
240 223
241 -* Improvements:
242 - * Scheduled maintenance deletes old daily rows in batches to prevent timeouts on large databases.
243 - * New index on the daily table speeds up maintenance queries. Apply it to existing installs via Recreate Primary Key under Tools.
224 +**Changed**
244 225
245 -* Fixed:
246 - * Cache setting was referencing the wrong key, preventing posts from ever being cached.
247 - * Database version was recorded before upgrade routines ran, causing upgrades to be silently skipped on re-activation.
248 - * Daily queries now work on MySQL servers with ONLY_FULL_GROUP_BY enabled.
249 - * Posts with identical counts now display in a consistent order when paginated.
250 - * Daily counts now use the site's configured timezone instead of server time.
251 - * Dashboard "Total visits" now matches the chart total rather than summing only the top 20 posts.
252 - * Popular posts ordering no longer overridden by Post Types Order and similar plugins.
253 - * Deactivation now clears both cron jobs and sets the settings option to not autoload.
254 - * Removed incorrect `wpmu_drop_tables` filter that tried to drop network-wide tables on site deletion.
226 +* Reduced admin overhead on large multisite networks by caching table metadata, probing WPP tables directly and using estimated row counts on the Tools page.
227 +* Sped up the dashboard with index-friendly `dp_date` ranges, optimized network popular-post queries and on-demand loading of historical tabs.
228 +* 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.
255 229
256 -= 4.2.3 =
230 +**Security**
257 231
258 -* Security:
259 - * Hardened Settings API and metabox output escaping.
232 +* Hardened settings sanitization for users without the `unfiltered_html` capability.
233 +* Hardened referer and array handling in settings sanitization, and renamed the settings JS globals.
260 234
261 -* Improvements:
262 - * Updated Freemius SDK to version 2.13.1.
263 - * Updated Settings API assets and Tom Select handling.
264 - * Refreshed translations and generated assets.
235 +**Fixed**
265 236
266 -* Fixes:
267 - * Fixed metabox screen handling when `get_current_screen()` is unavailable.
268 - * Fixed admin notices package tags.
237 +* View tracking was lost during quick navigation or browser back-button restores.
238 +* View counts were recorded for prerendered or initially hidden pages.
239 +* Bot views were recorded from cached pages, and views were recorded for browser prefetches, prerenders and direct navigations to tracker URLs.
240 +* Tracker scripts did not run when loaded asynchronously after `DOMContentLoaded` had fired.
241 +* Generated output cache keys were not discoverable by the Clear Cache tools or the WP-CLI cache flush command.
242 +* 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`.
243 +* `tptn_get_settings()` returned `false` instead of an empty array when no settings had been saved yet.
244 +* Visit data was silently lost in funnel aggregation, and the Fast Tracker raised an undefined array key warning.
245 +* Plugin data was deleted when uninstalling one version while its paired free or Pro counterpart was active.
246 +* Improved compatibility with PHP 8.6.
247 +* [Pro] Daily counts in the `wp top10 popular` command did not respect the selected custom date range.
269 248
270 -= 4.2.2 =
249 += Earlier versions =
271 250
272 -* Modifications:
273 - * Taxonomy Suggest script removed from Settings API. Metabox also uses Tom Select for the lookup of the category field in CRP Pro.
251 +For the changelog of earlier versions, please refer to the [releases page on GitHub](https://github.com/WebberZone/top-10/releases).
274 252
275 -* Fixes:
276 - * CSS improvements for left-thumbs and grid-thumbs styles.
277 -
278 -= 4.2.1 =
279 -
280 -* Security:
281 - * Fixed REST API permission checks to prevent unauthorized exposure of post passwords in edit context.
282 -
283 -* Fixes:
284 - * Fixed a bug with the "Clear cache" button in the Tools page.
285 - * Fixed thumbnail location restrictions to properly support Grid thumbnails style in addition to Left thumbnails.
286 - * Improved JavaScript logic for style-based thumbnail location validation with better error handling and fallback mechanisms.
287 -
288 -= 4.2.0 =
289 -
290 -Release post: [https://webberzone.com/announcements/top-10-v4-2-0/](https://webberzone.com/announcements/top-10-v4-2-0/)
291 -
292 -* New:
293 - * Settings wizard to guide initial configuration and review existing settings
294 - * Network-wide dashboard with aggregated multisite statistics
295 - * [Pro] High-traffic tracking mode with status validation panel
296 - * [Pro] Copy settings between multisite network sites
297 - * [Pro] Compact “Top 10 Views Overview” dashboard widget
298 - * [Pro] Option to disable the Admin Bar menu
299 - * [Pro] Maintenance setting to override data retention period
300 -
301 -* Improvements:
302 - * [Pro] Improved dashboard chart bar click-through to open the Popular Posts screen filtered to that day
303 - * Updated Settings API to version 2.7.1
304 - * Improved media handler with recursion protection and more robust processing
305 - * Media Handler now supports the FIFU WordPress plugin for featured image detection.
306 - * Improved Tools page statistics display and caching
307 - * Wrapped Import/Export and Tools sections in postbox containers for consistent UI
308 -
309 -* Developer / Internal:
310 - * Refactored popular posts queries for improved performance and WordPress VIP compatibility
311 - * Updated caching behaviour for dynamic exclusions
312 - * Refactored database operations into a dedicated Database class
313 - * Updated Freemius SDK to version 2.13.0
314 -
315 -* Fixes:
316 - * Fixed `Top_Ten_Query` handling of the `date_query` argument
317 - * Fixed activation redirects on single-site installs within multisite networks
318 - * Fixed `exclude_current_post` behaviour when caching is enabled
319 - * Fixed live-edit count updates in multisite statistics
320 -
321 253 == Upgrade Notice ==
322 254
323 -= 4.3.0 =
324 -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.
255 += 4.5.2 =
256 +Keeps popular posts in the correct language on multilingual sites, adds controls for REST API endpoints and Pro lazy loading, and fixes setup wizard accessibility.