Skip to content

The Hits List Features

The Hits List tracks WordPress post views locally, makes popular content easy to display, and helps you decide which articles deserve a fresh look. These features are available in version 1.6.0.

Local View Tracking

View counts are stored in your WordPress database instead of a third-party analytics service. The plugin keeps lifetime totals, daily buckets, and short-lived hourly buckets. Hourly data is collected alongside Daily count, without a separate tracker setting.

Choose REST API or AJAX under Tracker Type. You can also choose whether to count logged-in users and exclude recognised bot views. These are recorded views, not unique visitors.

Popular Posts And Post Views Blocks

Use The Hits List – Popular Posts in the block editor, the Popular Posts widget in widget areas, or [thl_list] in content. These are useful for sidebars, homepage modules, and section fronts.

Popular-list controls include:

  • Order by: Most views or Trending.
  • List or grid layouts, thumbnails, excerpts, authors, dates, view counts, and list markers.
  • Public post types, category filters, and included or excluded post IDs.
  • Custom period?, with Daily range and Hour range.
  • Exclude current post, so a singular article or page does not recommend itself.
  • Maximum post age (days), to limit results by publication date.

Age and view-count windows are separate. An age of 30 includes today and the preceding 29 calendar days in the site's timezone; 1 means today and 0 leaves age unlimited. The setting uses the publication date, not the last edit. Eligible alternatives fill the list after filters are applied.

Use The Hits List – Post Views to display one post's formatted count. Set Post ID to 0 for the current post or enter another ID, and use Show when zero to decide whether an empty count appears. [thl_views] and [thl_views id="123"] offer shortcode placement too.

The block, widget, and shortcode share the main list options, while their presentation controls differ. Shortcode examples are in Getting Started.

Ranking Suppression

Keep an individual post or a group of posts out of public popular/trending lists and dashboard rankings, including Refresh Candidates:

  • Check Suppress this post from rankings in the post's editor controls and save.
  • Under Settings > The Hits List > Ranking Suppression, select categories or tags by name and save changes.
  • Enable Child Categories if selected categories should also suppress all their descendants. It is off by default.

A match against any selected category or tag suppresses the post. Suppression preserves tracking, individual counts, article reports, and count history; normal retention still applies. Clear every matching rule to restore eligibility. Clear your page cache too if it already contains rendered lists.

A list of your most-viewed posts is usually dominated by the same evergreen content, and it does not tell you what is happening right now.

Trending compares the last three completed days with the preceding fourteen completed days by default. It adjusts for the different window lengths and smooths small samples, so a steady daily rate scores 1.00. The score is a ranking aid, not a literal growth multiplier or percentage. Today is excluded.

The dashboard labels new articles, thin baselines, no recorded prior views, and incomplete or unknown history. A score based on limited history needs that context.

Refresh candidates highlights established, previously well-read posts whose recent recorded activity is low compared with their lifetime daily average. This is a useful editorial shortlist rather than proof that an article needs rewriting.

Both are calculated from view data the plugin already collects. Nothing extra is tracked.

Article Performance And Refresh Follow-Up

The editor's The Hits List panel shows Article performance: lifetime views, completed 7- or 30-day charts, comparisons with the preceding equal period, and accessible daily-count tables. The date ranges and site timezone are shown, and today is excluded.

Reports distinguish known zero counts from missing or incomplete history. Percentages are withheld when coverage is insufficient, the baseline is zero, the article is too new, or a data read fails. Imported rows do not establish continuous tracking history.

Under Refresh follow-up, users who can edit the article can:

  • Snooze 30 days to temporarily remove it from Refresh Candidates.
  • Undo snooze before expiry, or let it return to eligibility automatically.
  • Mark refreshed after saving an intentional update.

Marking a refresh records its date and compares seven full days before with seven full days after. The refresh day and today are excluded. The after period shows its progress while accumulating; a percentage requires both covered periods and a nonzero baseline. An ordinary save does not mark a refresh, and marking one again replaces the previous follow-up reference.

Snoozing and refresh markers leave view tracking, counts, and public rankings intact. Article reports follow permission to edit that article. Limit Metabox to Admins restricts count/display controls while keeping reports and refresh actions available to article editors; Show Editor Metabox enables or hides the whole panel.

Dashboard Cards

The WordPress dashboard includes five cards:

  • Daily top posts.
  • All-time top posts.
  • Views over time, with a comparison against the previous period.
  • Trending now.
  • Refresh candidates.

Views Over Time charts the last 30 completed days and compares them with the preceding 30. Exact dates, timezone, daily coverage, and any known available date range help explain why a comparison may be unavailable. Suppression affects ranked lists; suppressed articles still contribute to site-wide totals.

Dashboard access defaults to users who can manage site options. Under Dashboard Access > Additional Dashboard Roles, add roles for the current site without granting settings access. A developer capability override, when installed, takes precedence over those role choices. Refresh actions still require permission to edit the individual article.

Post List View Columns

Under Content List Columns > Show View Columns For, choose Posts, Pages, or registered public custom post types. Posts is the default; leaving all types unchecked removes the columns.

The list screens offer sortable Total Views and Today's Views columns, plus a display-only condensed Views column showing lifetime/today counts. Use Screen Options to choose which appear. Counts are read in batches, and this setting does not change tracking.

Data Retention And Export

Daily buckets are kept for 180 days by default. Change Daily Data Retention in settings. Hourly buckets are kept for 48 hours by default; developers can adjust their retention with thehili_store_hourly_hours.

An hour-only popular-list window within hourly retention uses hour buckets, including the current partial hour. Longer hour windows, or an hour range combined with a Daily range above 1, fall back to whole daily buckets and may include more time than requested. Increasing retention cannot recover rows already pruned.

Lifetime totals are not aged out by scheduled retention. They can still be changed or removed by count edits, imports, permanent content deletion, orphan cleanup, or explicit maintenance.

Export And Import View Counts downloads overall and daily counts for the current site as CSV or JSON. Hourly buckets, settings, and refresh markers are not included, so an export is not a complete site backup.

Upload a compatible export under Import View Counts. Replace existing counts sets the imported entries to their file values and is safe to repeat. Add to existing counts sums them into current counts; importing the same file twice adds the values twice. Imports use post IDs on the receiving site, so check that those IDs refer to the intended articles. Imported daily counts do not prove uninterrupted collection history.

Deleted Content And Count Maintenance

Permanent post deletion removes its lifetime, daily, and hourly count rows. Trash preserves counts by default, so restoring the post preserves its recorded history. Permanent multisite site removal cleans that site's shared count partition; archival and soft deletion preserve it.

Version 1.6.0 also schedules a one-time background sweep of older orphaned rows. It works in bounded, resumable batches and preserves every existing post regardless of type or status. The settings screen shows progress, per-table removed totals, completion, and errors. Network administrators see the multisite report. Background progress depends on WordPress cron running.

WP-CLI can preview or delete selected posts' counts without deleting the articles:

wp the-hits-list delete-post-counts 123 456 --dry-run
wp the-hits-list delete-post-counts 123 456

Use --blog-id=2 to select an existing multisite site. Partial failures report confirmed progress and exit nonzero; the command is safe to retry.

Top 10 Migration

The Hits List can import compatible overall and daily counts from Top 10 tables. Imports are rerun-safe, so repeating an unchanged import does not double-count the same source data. Existing Top 10 widgets and shortcodes keep working after Top 10 is deactivated, and the plugin can clean up leftover Top 10 data when you are ready.

See Migrating From Top 10 before running a production migration.

Tracking And Page Caching

REST is the default. Select AJAX if REST requests are blocked in your environment; a failed REST request does not automatically switch methods.

The tracker uses a nonce generated when the page is rendered. A full-page cache can serve that nonce after it expires, causing tracking requests to fail with 403. Version 1.6.0 does not automatically refresh it. Check tracking on cached pages as part of setup and coordinate cache expiry or cache exclusions with your hosting/cache provider. Dynamic Post Count refreshes displayed counts; it does not fix an expired tracking nonce.

Built To Stay Quick

Popular-post output is cached and its database work is batched, so a list costs roughly the same whether it shows three posts or thirty. On sites with a persistent object cache the savings carry between page loads as well.

Privacy-Friendly Operation

The Hits List keeps tracking data local to your WordPress database and does not send view counts to a third-party analytics endpoint.