WP-Stats · Version history
WP-Stats changelog and version history
- Latest version
- 3.0.1
- Sep 1, 2026 (2 months ago)
- Releases
- 20
- since 2007
- In the last year
- 3
- about one every 20 days
- Tested up to
- WordPress 7.1.4
- PHP 8.2 or later
Releases each year
- 200711 releases
- 20082 releases
- 20092 releases
- 20181 release
- 20231 release
- 20263 releases
20263 releases
WP-Stats 3.0.1Latest
- NEW: A wp_stats_needs_styles filter, for code that renders the statistics where WP-Stats cannot see it coming. 3.0.0 loads the stylesheet only where it finds a [page_stats] shortcode or the block in the post being viewed, or the widget in a sidebar. A theme calling WP_Stats_Page::render() itself, o…
WP-Stats 3.0.0
- FIXED: Recent Posts and Most Commented did not honour a site’s own posts_where filter. get_posts() suppresses filters by default, so a membership or paywall plugin hiding published posts had them listed on the public statistics page anyway — which contradicted the reasoning the rest of the file is…
- FIXED: One of the three places that builds an author link did not escape the URL, relying instead on the caller having encoded the name first. It happens to be true today; nothing enforces it
- BREAKING: Requires WordPress 6.8 and PHP 8.2.
- BREAKING: The stats_url, stats_mostlimit, stats_display, stats_options and stats_db_version rows are replaced by wp_stats_options and wp_stats_version, migrated automatically on upgrade and then deleted. The old names are no longer answered.
- BREAKING: The unprefixed stats_page filter is now wp_stats_page, and is handed the page complete with its wrapper element.
- BREAKING: The seven wp_stats_page_* filters, the two wp_stats_paging_* filters and the seven wp_stats_page_admin_* filters are removed. A plugin contributing a block answers wp_stats_sections and renders through wp_stats_section_<slug>.
- BREAKING: stats_display_defaults() is removed. A plugin keeps its own display setting in its own option row.
- BREAKING: The statistics screen moved from Dashboard -> WP-Stats and the settings from Settings -> Stats onto one WP-Stats page with two tabs, Statistics and Settings, at admin.php?page=wp-stats.
- BREAKING: Every class is prefixed. The widget class is WP_Stats_Widget; placed widgets and their settings are unaffected.
- NEW: A Blog Statistics block, wp-stats/page-stats, which renders the statistics page in the editor and on the front end. The [page_stats] shortcode is unchanged and still supported — the block calls the same code, so the two render identically and a page already using the shortcode needs no change.
- NEW: wp_stats_sections and wp_stats_section_<slug>, the contract other plugins use to add a block to the statistics page.
- NEW: wp_stats_capability, which every capability check goes through, so the read-only statistics tab can be opened to editors without opening the settings.
- NEW: Restructured into includes/ with one class per responsibility.
- NEW: Settings screen rebuilt on the WordPress Settings API.
- NEW: PHPUnit test suite and GitHub Actions CI.
- CHANGED: The statistics page is wrapped in <div class="wp-stats"> and the stylesheet is scoped to it, so it no longer restyles WP-PageNavi’s paging and no longer refuses to load when that plugin is active.
- CHANGED: The stylesheet moved to css/wp-stats.css and inherits the theme’s colours instead of hardcoding blue on white. A theme’s own copy of stats-css.css is no longer looked for; dequeue the wp-stats handle instead.
- CHANGED: Every listing is built from core query APIs rather than hand-written SQL, so the results are cached the way the rest of WordPress caches them and any filter a site already uses to hide content still applies.
- CHANGED: The “Authors” counts are the users who can publish posts, rather than users with a legacy user_level above 1.
- CHANGED: stats_author and stats_page are registered query variables now.
- FIXED: The stylesheet never loaded, because it was hooked to wp_enqueue_script, which is not an action. It now loads on pages that render the paging.
- FIXED: Rendering the statistics page no longer overwrites the global $post, which could leave a theme’s loop pointing at the wrong entry.
- FIXED: Uninstalling on multisite stopped at the hundredth site and left the rest of the network’s rows behind.
- FIXED: get_linkcats() and get_tags_list() used arguments and functions deprecated since WordPress 3.0.
- FIXED: Removed the unreachable “Comments Protected” branch; every listing already excludes password-protected posts.
- FIXED: A negative stats_page query argument caused a SQL error.
- FIXED: A commenter whose name contains an apostrophe or a quote — “Sinead O’Brien” is enough — got an empty list of comments, under a heading with a stray backslash in it. The stats_author query argument was read without removing the slashes WordPress adds to every request value, so the name never…
- FIXED: Undefined index warning reading the post-password cookie.
- FIXED: The widget’s “Statistics To Display” label used the wrong text domain and could not be translated.
- FIXED: The widget’s spam line read “Spam Blockeds” in the plural.
WP-Stats 2.56.1
20231 release
WP-Stats 2.56
20181 release
WP-Stats 2.55
20092 releases
WP-Stats 2.50
WP-Stats 2.40
20082 releases
WP-Stats 2.31
WP-Stats 2.30
200711 releases
WP-Stats 2.20
WP-Stats 2.11
WP-Stats 2.10
WP-Stats 2.06
WP-Stats 2.05
WP-Stats 2.04
WP-Stats 2.03
WP-Stats 2.02
WP-Stats 2.01
WP-Stats 2.00
WP-Stats 1.00
Questions about WP-Stats’s releases
What is the latest version of WP-Stats?
3.0.1, released on Sep 1, 2026 (2 months ago). It’s tested up to WordPress 7.1.4 and needs PHP 8.2 or later.
How often is WP-Stats updated?
3 releases in the last year, about one every 20 days. Its first release on WordPress.org dates from March 2007.
Know when your rivals ship
Track your plugin and its rivals: TrackWP sees each new release in the nightly snapshot and alerts you, with what it did to their rank.
Start freeRelease dates come from the day each version’s folder was made in WP-Stats’s WordPress.org SVN repository; the notes from its readme’s changelog, as its authors wrote it.