Fixed the “Formulieren” (Forms), “Top search terms” and “Most discussed”
boxes on the Analysis/Statistics pages silently disappearing for any
period other than “All time” – a broken date filter made the underlying
query invalid SQL, so it failed silently and the box was dropped.
1.21.0
New [turf_stats] shortcode: an at-a-glance table (online now, today,
yesterday, last 7 days, last 28 days) for a sidebar Text/HTML widget or
Shortcode block, with metric (views/visitors), layout (table/list)
and items attributes to customize which rows show.
Fixed a corrupted Dutch (nl_NL) .mo file (duplicate “Online now” source
string made it fail to compile, and the compiled file itself wasn’t a
valid sorted .mo) – Dutch translations were silently not loading.
1.20.3
Screen resolution breakdown labels are now English source strings with
Dutch translations in the language file (was accidentally Dutch in code).
Daily chart window math extracted into a shared turf_day_window() helper
so the single-day and 7-day windows no longer duplicate the timezone logic.
Fixed TURF_VERSION (the cache-busting version for all enqueued JS/CSS)
being stuck at 1.19.0 since the 1.20.0 release – every asset change since
then was shipped under an unchanged version string.
1.20.2
Fixed daily bar chart on the Today/Yesterday/fixed-date tabs: it showed
only the anchor day (plus a sliver of the day before under a non-UTC site
timezone) instead of the intended 7-day context window. The chart query
now spans the 7 days ending on the selected day, matching the 7 bars it
renders. Regression from 1.20.0 (date navigation).
1.20.1
Screen resolution: fall back to viewport innerWidth/innerHeight in the
tracking JS when window.screen reports 0 or is missing (in-app webviews,
fingerprinting-protected browsers) so fewer views land in “unknown”.
Screen resolution breakdown now separates App/REST API views (which never
run the tracking JS and legitimately have no screen size) from real browser
views that failed to report one, instead of lumping both into a single
“unknown” bucket.
1.20.0
Added date navigation (native date picker, Yesterday tab) with fixed-date sentinel fix.
Added top-referrers ‘Toon meer’ toggle (shows 10, reveals up to 50).
Added dashboard widget (online now, today’s views/visitors with % vs yesterday), reusing overview card styling.
Added review-nudge snooze (random 30-90 days, max 3x then permanent).
Added device-class label (Phone/Tablet/Desktop) at screen resolution.
New “Screen resolution” breakdown box: visitor screen sizes (in CSS
pixels) are recorded with each view. The new database columns are added
automatically on update.
New “Avg. load time” stat box: page load times are measured in the
visitor’s browser via the Navigation Timing API and averaged per period.
The “Online now” box gains a live “Currently viewed” list of the pages
current visitors are on, refreshed on the same 20-second poll.
Hourly visitors chart reworked: a fixed 24-hour axis with a dashed
“yesterday” line for direct comparison against the previous day.
Daily views/visitors bars now show their values on the chart, with
density-based label sizing on the 30- and 90-day views.
The Caching box now explains itself when a cache layer is detected but
is serving (almost) none of the tracked page views.
Much faster legacy view-count import: a Jetpack top-posts pre-pass
covers the most-viewed posts in one request, admin-page batches run
concurrently, and the WP-CLI command gains –offset/–limit flags.
Dutch (nl_NL) translation updated for all new strings.
1.18.1
Added wordpress.org listing screenshots (Statistics overview, Analysis,
Bots & LLMs) and the corresponding == Screenshots == section. No
functional or tracking changes.
1.18.0
The GitHub-based update checker is removed entirely (updater.php and its
vendored library) – releases now deploy straight to WordPress.org via a
GitHub Action, and updates are handled by wordpress.org like any other
hosted plugin.
Fixed postbox drag-order and collapse/expand state not actually being
saved: the admin pages were missing the nonce fields WordPress core’s own
postbox AJAX handlers look for, so those requests silently failed. Order
and collapsed state now persist correctly per user.
The site-specific “Dorpsapp” companion-app integration is now a generic,
opt-in connector-app mechanism (turf_connector_app_route_patterns /
turf_connector_app_label filters) – no behavior change unless you were
using the old turf_dorpsapp_route_patterns filter, which is renamed.
Added a GitHub issues link (bug reports / feature suggestions) to the FAQ.
The legacy view-count import (Jetpack Stats / the old entry-views plugin) is
now also available as a “Statistics > Import” admin page, alongside the
existing wp turf-stats import-legacy-views WP-CLI command – same import,
run in small AJAX batches with a progress bar instead of the command line.
1.17.2
Fixed a WordPress.org submission error: the Plugin URI and Author URI
headers pointed at the same URL. Author URI now points at the author’s
GitHub profile instead of the plugin repo.
1.17.1
Cleared the remaining WordPress.org Plugin Check warnings: dropped the
now-redundant load_plugin_textdomain() call (translations for wp.org-hosted
plugins load automatically since WP 4.6) and annotated the opt-in REST debug
logger. No functional or tracking changes.
1.17.0
WordPress.org compliance release: readme.txt, uninstall.php with opt-in data
removal, direct-access guards on all files, and the GitHub update checker is
no longer part of the WordPress.org build (updates come from wordpress.org).
1.16.1
Long lists are now collapsed before first paint (CSS), eliminating the
load-time jump introduced in 1.16.0.
1.16.0
Cache offload insight (served-from-cache % with layer detection).
Landing pages report with per-landing bounce rate.
Blocks with no data for the selected period are hidden entirely.
All lists use one in-place Show more / Show less toggle; server-side
pagination removed.
1.15.0
Bilingual: English source strings with a bundled Dutch (nl_NL) translation.
1.14.0
Raw (non-deduplicated) view counting, views per visitor, average visit
duration, an hourly visitors chart for “Today”, and full-URL outbound link
tracking including the source page.
Earlier
See https://github.com/fbloemhof/turf-stats/releases for the full history.