PageResonance

Description

PageResonance is a lightweight, privacy-focused page view counter for WordPress. It tracks real human visitors while filtering out bots and preventing duplicate counts from the same visitor within a 24-hour window.

Features:

  • Track views for posts, pages, and custom post types
  • Track views for category, tag, and custom taxonomy archives
  • Bot and crawler detection (50+ known bot patterns)
  • Client-side human verification (requires mouse, scroll, touch, or keyboard interaction)
  • Rolling 24-hour deduplication per visitor
  • Privacy-focused: visitor identity is hashed with SHA-256 and raw identifiers are never stored
  • Admin statistics page sorted by highest views
  • Sortable “Views” column in posts, pages, and taxonomy list tables
  • Shortcodes for displaying view counts on the frontend
  • Template function for theme developers
  • Settings page to choose which post types and taxonomies to track
  • Clean uninstall removes all plugin data

Usage

Shortcodes

Post/Page Views:

  • [pageresonance_page_views] — Displays the view count for the current post.
  • [pageresonance_page_views label="Views:"] — Adds a text label before the count.
  • [pageresonance_page_views icon="1"] — Adds an eye icon before the count.
  • [pageresonance_page_views id="123"] — Displays the view count for a specific post by ID.

Total Site Views:

  • [pageresonance_total_views] — Displays the total view count across all posts.
  • [pageresonance_total_views label="Total Views:"] — With a label prefix.
  • [pageresonance_total_views icon="1"] — With an eye icon.

Taxonomy Archive Views:

  • [pageresonance_term_views] — Displays the view count for the current category/tag archive.
  • [pageresonance_term_views id="5"] — Displays the view count for a specific term by ID.
  • [pageresonance_term_views label="Views:" icon="1"] — With label and icon.

Template Function

<?php echo pageresonance_get_views(); ?> — Returns the view count for the current post.

<?php echo pageresonance_get_views( 123 ); ?> — Returns the view count for a specific post.

<?php echo pageresonance_get_term_views(); ?> — Returns the view count for the current category or tag archive.

<?php echo pageresonance_get_term_views( 5 ); ?> — Returns the view count for a specific term.<h3>Privacy</h3>

PageResonance stores view counts on your site. It does not send visitor data to an external server.

To avoid counting the same visitor twice within 24 hours, the plugin temporarily stores a one-way SHA-256 hash derived from the visitor IP address, browser user agent, and a site-specific WordPress salt. Raw IP addresses and user agents are not stored. A daily cleanup removes expired hashes, normally within 48 hours.

The same description is suggested in WordPress under Settings Privacy.

Installation

  1. Upload the pageresonance folder to the /wp-content/plugins/ directory.
  2. Activate the plugin through the ‘Plugins’ menu in WordPress.
  3. Go to PageResonance > Settings to select which post types and taxonomies to track.
  4. Use the shortcodes or template function to display view counts on the frontend.

FAQ

How does bot filtering work?

The plugin uses two layers of protection:

  1. Client-side: The tracking script only fires after a genuine user interaction (mouse movement, scroll, touch, click, or keypress). Bots that don’t execute JavaScript or trigger DOM events are never counted.
  2. Server-side: The user-agent string is checked against 50+ known bot and crawler patterns. Requests with empty user-agents are also rejected.

How does the 24-hour deduplication work?

Each visitor is identified by a SHA-256 hash of their IP address, user-agent, and a WordPress salt. This hash is stored in a log table with a timestamp. If the same hash visits the same post or term again within 24 hours, the view is not counted. A daily cron job removes expired entries, so an expired hash is normally deleted within 48 hours.

Is visitor data stored securely?

The plugin does not store raw IP addresses or user-agent strings. It temporarily stores a one-way SHA-256 hash derived from them for deduplication. Expired hashes are normally deleted within 48 hours.

Does this plugin work with caching plugins?

Yes. Tracking uses the WordPress REST API after a user interaction, so it works with page caching plugins.

What happens when I uninstall the plugin?

All plugin data is removed: custom database tables, post meta, term meta, and plugin options.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“PageResonance” is open source software. The following people have contributed to this plugin.

Contributors

Translate “PageResonance” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.0.2

  • Restyle the How to Use shortcode list so each example is a row instead of a table inside a card.

1.0.1

  • Limit public tracking by IP address, with a daily cap on new visitor identities.
  • Trust forwarded IP headers only when the direct connection comes from a listed proxy.
  • Skip password-protected posts until the visitor unlocks them.
  • Prefix spreadsheet formula characters in CSV export, including after leading whitespace.
  • Count views from logged-in visitors.
  • Show taxonomy totals for the 7-day and 30-day statistics ranges.
  • Match the admin screens to the shared card layout.
  • Point the About tab to pageresonance.com.

1.0.0

  • Initial release of PageResonance.
  • Post, page, and custom post type view tracking.
  • Taxonomy archive view tracking.
  • Bot filtering and 24-hour visitor deduplication.
  • Admin statistics page.
  • Shortcodes and template function.
  • Settings page for selecting tracked post types and taxonomies.